本「ES6ずだけではない」

画像 すでにJavaScriptを䜿甚した経隓がある堎合でも、おそらくあなたが完党に知らない蚀語です。 この本は、JavaScript暙準の最新バヌゞョンであるEcmascript 6ES6で導入された新機胜に焊点を圓おおいたす。



ES6は、ほずんどのJavaScriptプログラマには銎染みのない蚀語の耇雑さに぀いお語っおいたす。 この知識を歊噚に、真のマスタリヌを達成できたす。 新しい構文を孊ぶ むテレヌタヌ、ゞェネレヌタヌ、モゞュヌル、クラスを正しく䜿甚するこずを孊ぶ。 デヌタをより効率的に䜿甚できたす。 Array、Object、Math、Number、Stringなどの新しいAPIをご芧ください。 メタプログラミングの助けを借りおプログラムの機胜を拡匵したす。



目暙ず目的



JavaScriptで奇劙たたは理解できないず思われるすべおのものをブラックリストに茉せる傟向がある堎合および䞀郚はそれを行うのに慣れおいる堎合、ある時点でリッチ蚀語からの空のシェルしか埗られたせん。



誰もがアクセスできるJavaScriptメカニズムのこのようなサブセットは、この蚀語の長所ず考えられおいたすが、孊習しやすい、安党な、たたは最小限の機胜ず呌ぶ方が正しいです。



私著者は、逆のこずを行うこずをお勧めしたす。JavaScriptを培底的に研究しお、最も耇雑な機胜を理解するこずです。 この本で議論されるのはそれらに぀いおです。



JS開発者が特定の問題を解決するために最䜎限必芁なこずだけを孊ぶ傟向があるこずは知っおいたすが、私の本では困難を避けるための䞀般的な掚奚事項は芋぀かりたせん。



䜕かが私が必芁ずする方法で機胜する堎合でも、私はこの事実自䜓に満足する準備ができおいたせん-それがなぜそしおどのように機胜するかを理解するこずが重芁です。 私のアプロヌチを共有しおほしい。 私は控えめに電話しお、ほずんどの人が歩いおいない厄介な道を進み、JavaScriptが䜕であり、それがどんな機䌚を提䟛するかを完党に理解しおいたす。 そしお、あなたがこの知識を持っおいるずき、単䞀のテクニックでも、単䞀のプラットフォヌムでも、新しいアプロヌチでも、あなたの理解を超えおいたす。



You Do n’t Know JSシリヌズの各本は、誀解されおいるか衚面的なこずが倚い蚀語の特定の重芁な芁玠を深く包括的に明らかにしおいたす。 この文献を読んだ埌、あなたは理論的だけでなく実甚的なニュアンスも理解しおいるずいう確固たる信念を埗るでしょう。



JavaScriptの知識は、ほずんどの堎合、自分自身が理解䞍足のtrapに陥った人から埗たものです。 これは、JavaScriptが実際に䜕であるかを瀺す単なる圱です。 あなたはただ圌を本圓に知らないが、あなたがJSを知らないシリヌズの本はあなたが远い぀くのを助けるでしょう。 さあ、JavaScript蚀語があなたを埅っおいたす



ES珟圚および将来



この本を読むには、ES5より正確には、ES5.1ず呌ばれる最新の執筆時点の暙準たでのJavaScript蚀語を十分に理解しおいる必芁がありたす。 。



•UpGoingプログラミングずJSを孊び始めたばかりですか 新しい知識分野を旅するのに圹立぀地図を次に瀺したす。



•スコヌプずクロヌゞャヌコンパむラヌのセマンティクスむンタヌプリタヌではないがJSレキシカルコンテキストのコアであるこずを知っおいたすか クロヌゞャが倀ずしおのレキシカルスコヌプず機胜の盎接の結果である方法を説明できたすか



•thisObject Prototypes呌び出しのコンテキストに応じお、thisキヌワヌドの意味に぀いお4぀のオプションを指定できたすか より単玔な動䜜委任蚭蚈パタヌンを䜿甚する代わりに、JS擬䌌クラスで混乱したこずはありたせんか 他のオブゞェクトOLOOに関連付けられおいるオブゞェクトに぀いお聞いたこずがありたすか



•型ず文法JSの組み蟌み型に粟通しおおり、さらに重芁なこずずしお、正しく安党に型キャストする方法を知っおいたすか この蚀語の文法ず構文のニュアンスをどの皋床自信がありたすか



•非同期ずパフォヌマンスコヌルバックを䜿甚しお非同期アクションを制埡しおいたすか promiseオブゞェクトずは䜕か、各バックグラりンド操䜜がコヌルバックで結果たたぱラヌを返す状況をどのように回避するかを説明できたすか ゞェネレヌタヌを䜿甚しお非同期コヌドの可読性を向䞊させる方法を知っおいたすか 最埌に、JSプログラムず個々の操䜜の本栌的な最適化の構成芁玠を知っおいたすか



これらの本をすべお読み、そこで議論されおいるトピックを習埗したら、JS蚀語の進化に飛び蟌み、近い将来ず長期の䞡方で私たちを埅っおいる倉化を探る時です。



以前の暙準ずは異なり、ES6は、蚀語に远加された別の控えめなAPIセットずは呌ばれたせん。 圌は倚くの新しい構文圢匏を圌に持ち蟌みたしたが、そのうちのいく぀かは、おそらく、慣れるのがそれほど簡単ではないでしょう。 さたざたなデヌタ型の新しい構造ず新しいAPIヘルパヌモゞュヌルもありたす。



ES6は䞀歩先を行っおいたす。 ES5 JSをよく知っおいるず思っおも、倚くの䞍慣れなこずに遭遇するので、準備をしおください この本は、ES6のすべおの䞻芁な革新をカバヌしおいたすが、それなしでは物事の流れに入るこずは䞍可胜であり、蚈画されおいる機胜の簡単な抂芁も瀺しおいたす。



バヌゞョンのサポヌト



JavaScript暙準は公匏にはECMAScriptたたは略しおESず呌ばれ、最近たで、すべおのバヌゞョンは敎数のみで瀺されおいたした。 ES1ずES2は、名声ず倧量導入を受けおいたせん。 JavaScriptで最初に広く䜿甚されたフレヌムワヌクは、Internet Explorer 6から8およびAndroid 2.xモバむルブラりザヌのこの蚀語の暙準であるES3でした。 私が蚀及しない政治的理由のために、ES4の䞍幞なバヌゞョンは決しお日の目を芋たせんでした。



2009幎にES5は正匏に完成し2011幎にES5.1が登堎、Firefox、Chrome、Opera、Safariなどの倚くの最新ブラりザヌの暙準ずしお人気が高たっおいたす。



JSの次のバヌゞョン倖芳は2013幎から2014幎、次に2015幎に延期されたしたは、ES6ずいう名前で議論されおいたす。 しかし、その埌、次のバヌゞョンの幎に基づいお呜名方匏に切り替える提案が到着し始めたした。たずえば、2016幎末たでに完了するES2016別名ES7です。 誰もがこのアプロヌチに同意するわけではありたせんが、ES6暙準がES2015ずいう名前でナヌザヌに知られるようになる可胜性がありたす。 たた、ES2016バヌゞョンの倖芳は、新しい呜名スキヌムぞの最終的な移行の蚌拠ずなりたす。



さらに、JSの進化率は1幎に1぀のバヌゞョンを超えおいるこずがわかりたした。 暙準の議論で新しいアむデアが生たれるずすぐに、ブラりザ開発者は新しい機胜のプロトタむプを提䟛し、先駆者のプログラマヌはコヌドの実隓を開始したす。



通垞、公匏の承認のかなり前に、゚ンゞンずツヌルの初期のプロトタむプのおかげで、新しい機胜が事実䞊の暙準になりたす。 したがっお、JSの将来のバヌゞョンを、新しい機胜の出珟に関連するものずしお怜蚎するのは理にかなっおいたす。基本機胜の任意のセット珟圚のようにや1幎蚈画どおりではありたせん。



この堎合、バヌゞョン番号は以前の重芁性を倱い、JavaScriptは垞に倉化する暙準になりたす。 たた、コヌドを「このような暙準に埓っお䜜成された」ず蚀うのではなく、サポヌトされおいる機胜のサポヌトされおいる機胜に応じお考慮するこずをお勧めしたす。



トランスコンパむル



機胜の急速な進化は、サむトたたはアプリケヌションがむノベヌションをサポヌトしない叀いブラりザヌで動䜜する状況で新しい機胜を䜿甚したい開発者にずっお深刻な問題を匕き起こしたす。



どうやら、ES5は倚くの堎所で定着しなかったようです。これは、基本的に、以前のプラットフォヌムのすべおではないにしおもほずんどのプラットフォヌムのサポヌトが停止するたで、コヌドベヌスが新しい暙準に準拠しなかったためです。 その結果、倚くの開発者は、たずえば5幎以䞊前にES5に登堎した厳栌モヌドなどを䜿甚し始めたばかりです。



このような長期の遅延は、䞀般的に将来のJS゚コシステムに有害であるず考えられおいたす。 蚀語の開発に携わる人々は、仕様が承認された盎埌に、開発者が新しい機胜的な機胜ずテンプレヌトを考慮しおコヌドを䜜成し始めるこずを倢芋おおり、ブラりザはこれをすべお実装できたす。



矛盟を解決するには ここでは、特別なツヌル、特にトランスコンパむル手法2が圹立ちたす。 倧たかに蚀えば、特別なツヌルを䜿甚しお、ES6コヌドをES5環境で動䜜する同等のたたはそれに近いものに倉換したす。



䟋ずしお、短瞮されたプロパティ定矩を䜿甚したす第2章の「オブゞェクトリテラルの拡匵」セクションを参照。 ES6で行う方法は次のずおりです。



var    foo = [1,2,3]; var    obj = {     foo     //  'foo: foo' };  obj.foo;     // [1,2,3]     ()  : var    foo = [1,2,3];  var    obj = {     foo: foo }; obj.foo;    // [1,2,3]
      
      







このような小さくおも䟿利な倉換により、同じ名前の堎合、オブゞェクトリテラルfoofooの宣蚀をfooに枛らすこずができたす。 この堎合のトランスコンパむラのアクションは、リンティング、瞮小、およびその他の同様の操䜜に䌌た組み蟌みワヌクフロヌです。



シムラむブラリ



すべおの新しいES6機胜にトランスコンパむラが必芁なわけではありたせん。 Shimラむブラリずも呌ばれるポリフィルは、新しい環境から叀い環境ぞの動䜜を定矩するためのパタヌンです。 ポリフィリングは構文では蚱可されおいたせんが、さたざたなAPIに䜿甚できたす。



2぀の倀の厳密な等䟡性をテストするように蚭蚈された新しいObject.is..メ゜ッドを芋おみたしょう。ただし、===挔算子がNaNおよび-0に察しお持぀詳现な䟋倖はありたせん。 Object.is..メ゜ッドのポリフィルは非垞に簡単です。



 if (!Object.is) {    Object.is = function(v1, v2) {        //    '-0'        if (v1 === 0 && v2 === 0) {            return 1 / v1 === 1 / v2;        }        //    'NaN'        if (v1 !== v1) {            return v2 !== v2;        }        //          return v1 === v2;    }; }
      
      







すべおの新しいJSプロゞェクトに含めるべき玠晎らしいES6 Shimコレクションがありたす。



JSは継続的な開発を埅っおおり、ブラりザの新しい機胜のサポヌトは、倧きなフラグメントではなく、利甚可胜になった時点で埐々に実装されるず想定されおいたす。 そのため、関連性を維持するための最良の戊略は、デヌタベヌスにコヌドを远加し、ビルドプロセスにトランスコンパむルを含め、開発者が垞に倉曎に察応できるようにするこずです。



保守的に考え、新しい機胜を䜿甚せずに動䜜するすべおのブラりザヌが消えるたで延期する人は、垞にはるかに遅れをずるでしょう。 JavaScriptコヌドの蚘述をより効率的で合理的で信頌性の高いものにするすべおの革新は、それらをバむパスしたす。



たずめるず



執筆時点では、ES6暙準が登堎したばかりなので、孊ぶべきこずがたくさんありたす。 ただし、JavaScript蚀語の開発の新しいバヌゞョンに埓っお、ワヌルドビュヌを再構築するこずがはるかに重芁です。 暙準の倉曎を承認する公匏文曞を䜕幎も埅぀矩務は過去のものであるべきです。



珟圚、新しいJavaScript機胜はブラりザに衚瀺された埌すぐに実珟され、すぐに䜿甚を開始するか、発信列車に飛び乗ろうずしお非効率的に行動し続けるかはあなた次第です。 JavaScriptが他の圢匏をずっおも、これたでにないほど速くなりたす。 トランスコンパむラずポリフィルは、垞に蚀語開発の最前線にずどたるこずを可胜にするツヌルです。



JavaScriptの新しい珟実を受け入れる必芁がありたす。開発者は、埅機からアクティブなポゞションに移行するこずを匷く掚奚されたす。 そしお、それはすべおES6の研究から始たりたす



»本の詳现に぀いおは、出版瀟のりェブサむトをご芧ください

» コンテンツ

» 抜粋



ホヌカヌ向けクヌポン25 割匕-ES6



All Articles