JavaScript言語の精粋な知識点のまとめ

17912 ワード

1.NaNは数値であり、正常な結果が得られない演算結果を表しています.NaNは自分を含めていかなる値にも等しくない.
 
2.Infinityは、すべての値が1.79769313486231570 e+308より大きいことを表しているので、Infinityは具体的な値がなく、集合です.
 
3.JavaScriptのすべての文字は16桁です.
 
4.以下に挙げた値は嘘として扱われます.
  • false
  • null
  • undefined
  • 数字0
  • 数値NaN
  • 空の文字列「」
  •  
    5.他のすべての値は本物として扱われます.true、文字「false」を含みます.
     
    6.forサイクルには形式があります.
    第一はよくある形式です.for(初期化従文;条件従文;増分従文)
    第二種類:for in文は、オブジェクトの属性名(またはキー名)を列挙します.ループ毎に、objectの次の属性の名前列がvariableに割り当てられます.
    この属性名は、通常は、オブジェクトのメンバであるか、それともプロトタイプチェーンであるかを判定するために、object.hasOwnPropertyを検出するために用いられる.
    使い方は以下の通りです
    1 for(myvar in obj){
    2      if(obj.hasOwnProperty(myvar)){//         ,   true。          
    3           ……
    4      }
    5 }
     
    7.演算子優先度:上から下まで:
  • .[]():属性抽出と呼び出し関数
  • delete new typeof+-!:単項演算子
  • */%:乗算、除算、取捨(実際の剰余計算、特に2つの演算数に負数があると表示された場合、モジュラス演算と剰余演算の値は同じではない)
  • +-:加算/接続、減算
  • >=<><:不等式演算子
  • =====不等式演算子
  • & 論理と
  • 𞓜𞓜:論理または
  • 三元です
     
    8.数字、文字列、ブール値の「似ている」オブジェクトですが、実は可変ではありません.配列、関数、正規表現はオブジェクトです.
     
    9.字面量:
    var empty y_object={}
    または
    var stooge={
          「first-name」:「Jerome」、
          「last-name」:「Howard」

    または
    var flight={    airline:「Oceanic」、    number:815、    departure:{           IATA:「SYD」           time:「2004-09-22 14:55」           city:「Sydney」    },    アリバー:{           IATA:「LAX」           time:「2004-09-23 10:42」           city:「Los Angeles」   }};
    属性名は空の文字列を含む任意の文字列とすることができます.属性名が合法的なjavascript識別子であり、予約されていない場合は、属性名を引用符で囲むことは強制的に要求されません.
    存在しないメンバー属性の値を検索するとundefinedに戻ります.undefinedのメンバー属性から値を取るとTypeError異常になります.これは&演算子によってエラーを回避できます.
    たとえば:
    flight.equipment&flight.equipment.model/undefinedは、最初は属性が存在しません.二つ目は属性が存在しない値です.
     
    10.原型と継承:
    まず変数を定義します.
    1 var stooge = {
    2     "first-name": "Jerome",
    3     "last-name": "Howard"
    4 };
    新しいオブジェクトを作成するには、オブジェクトを彼のプロトタイプとして選択することができます.ここではObjectにcreate方法を追加し、オブジェクトを作成して、stoogeオブジェクトをプロトタイプとして使用します.
    1 if(typeof Object.beget!=='function'){
    2       Object.create=function(o){
    3               var f=function(){};
    4               f.prototype=o;
    5               return new f();
    6        };
    7 }
    8 var another_stooge=Object.create(stooge);
    私たちはあるオブジェクトを変更した時、そのオブジェクトの原型には触れませんでした.
    1 another_stooge['first-name'] = 'Harry';
    2 another_stooge['middle-name'] = 'Moses';
    3 another_stooge.nickname = 'Moe';
    プロトタイプリンクは検索値の時にのみ使用されます.オブジェクトの属性値を取得しようとしますが、この属性名がない場合は、jsはプロトタイプから属性値を取得してみます.プロトタイプの中に属性値がない場合は、プロトタイプのオブジェクトのプロトタイプからObject.propotypeに達するまで、順次類推します.検索したい場合は、属性とプロトタイプチェーンが存在しない場合、結果はundefined値となります.このプロセスを委託といいます.
    for inサイクルは、オブジェクト内のすべての属性名を巡回します.このエニュメレーションプロセスには、関数とプロトタイプの属性が含まれています.オブジェクト内の属性の値が欲しいなら、hasOwnProttypeとtype ofが使用できます.
    1 var name;
    2 for(name in another_stooge){
    3     if(typeof another_stooge[name]!=="function"){
    4         document.writein(name+": "+another_stooge[name]);
    5     }
    6 }
    7               
    以上の方法で属性名が現れる順序は不確定です.
     
    削除:delete演算子は、オブジェクトの属性を削除するために使用されます.オブジェクトに属性が含まれている場合、その属性は削除されます.プロトタイプチェーンのオブジェクトには触れません.削除対象の属性は、プロトタイプチェーンからの属性を表示させることができます.例えば、
    1 another_stooge.nickname    // 'Moe'
    2 
    3 // Remove nickname from another_stooge, revealing
    4 // the nickname of the prototype.
    5 
    6 delete another_stooge.nickname;
    7 
    8 another_stooge.nickname    // 'Curly'
     
    11.グローバル汚染を減らす:
    第一の方法:唯一のグローバル変数を作成し、残りのグローバル変数はすべてその属性です.
     1 var MYAPP = {};
     2 
     3 MYAPP.stooge = {
     4     "first-name": "Joe",
     5     "last-name": "Howard"
     6 };
     7 
     8 MYAPP.flight = {
     9     airline: "Oceanic",
    10     number: 815,
    11     departure: {
    12         IATA: "SYD",
    13         time: "2004-09-22 14:55",
    14         city: "Sydney"
    15     },
    16     arrival: {
    17         IATA: "LAX",
    18         time: "2004-09-23 10:42",
    19         city: "Los Angeles"
    20     }
    21 };
    第二の方法:クローズド
     
    12.関数の実際のパラメータの個数が形式パラメータの個数を超えると、オーバーしたパラメータは無視されます.実際のパラメータが少なすぎると、欠落した値はundefinedに置き換えられます.
     
    13.thisはオブジェクト指向プログラミングにおいて非常に重要であり、彼の値は呼び出しモードに依存します.javascriptには4中呼び出しモードがあります.
    一つ目は、関数がオブジェクトの属性として保存されている場合の方法です.一つの方法が呼び出されたときに、オブジェクトにthisが結合されます.もし、式を呼び出すと、一つの属性を抽出する動作(一つの.式または下付き式を含む)が含まれるなら、一つの方法として呼び出されます.
    たとえば:
     1 var myObject = {
     2     value: 0;
     3     increment: function (inc) {
     4         this.value += typeof inc === 'number' ? inc : 1;
     5     }
     6 };
     7 
     8 myObject.increment(  );
     9 document.writeln(myObject.value);    // 1
    10 
    11 myObject.increment(2);
    12 document.writeln(myObject.value);    // 3
     
    第二に、関数コールモード:オブジェクトがオブジェクトの属性ではない場合、関数として呼び出されます.このモードで関数を呼び出すと、thisはグローバルオブジェクトにバインドされます.このようにすると、オブジェクトへのアクセスができなくなります.
    この方法で変数を定義して、thisとしてコピーすると、内部関数は新たに与えられた変数を通じてthisにアクセスできます.
    私たちはこの新たに与えられた変数をthatと呼びます.
    たとえば:
     1 <script type="text/javascript">
     2     var value=4;
     3           var myObject = {
     4                 value: 0,
     5 };
     6 
     7 
     8 myObject.double = function (  ) {
     9     // var that = this;    // Workaround.
    10     console.log(this.value);//0
    11     var helper = function (  ) {
    12         console.log(this.value);//4
    13     };
    14 
    15     helper(  );    //         helper
    16 };
    17 
    18 //        double
    19 
    20 myObject.double(  );
    21 document.writeln(myObject.value);    // 0
    22     </script>
    以上のコードの中で、まず方法の形でdoubleを呼び出します.このようにdoubleにthisが含まれているなら、このthisはmyObjectを指しています.だから、10行目はmyObject内部のvalueで、値は0です.doubleメソッドの内部には、関数として呼び出されるhelper関数があります.
     
    このような形では、helperは、thisを通じてmyObjectオブジェクト内部の他の属性にアクセスできません.var that=thisを追加すると、double関数内部のthis割り当て値をthat変数に変換し、helper関数内部のコードをsono.logsに変更します.このようにmyObjectの内部コードに出力することができます.
     1 <script type="text/javascript">
     2     var value=4;
     3           var myObject = {
     4                 value: 0,
     5 };
     6 
     7 
     8 myObject.double = function (  ) {
     9     var that = this;    // Workaround.
    10     console.log(this.value);//0
    11     var helper = function (  ) {
    12         console.log(that.value);//0
    13     };
    14 
    15     helper(  );    // Invoke helper as a function.
    16 };
    17 
    18 // Invoke double as a method.
    19 
    20 myObject.double(  );
    21 document.writeln(myObject.value);    // 0
    22     </script>
     第三のモード:コンストラクタ呼び出しモードは、関数の前でnewを使用して呼び出します.すると、陰で関数prototypeメンバーに接続された新しいオブジェクトを作成します.thisは、その新しいオブジェクトにバインドされます.
     1 var Quo=function(string){
     2           this.value="string";
     3 };
     4 
     5 
     6 Quo.prototype.get_status=function(){
     7           return this.value;
     8 };
     9 
    10 var myQuo=new Quo("confused");
    11 console.log(myQuo.get_status());//confused
    第四の呼び出しモード:appy呼び出し:
    appry方法は、私たちが呼び出された関数に渡すパラメータ配列を構築します.これは徐を潤します.thisの値を選択します.applyは二つのパラメータを受信します.最初はthisに結び付ける値です.このパラメータを設定することにより、関数の運転時の文脈を変更できます.thisの値です.nullに設定するか、または指定していない場合、thisはそれ自体を指定します.