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を検出するために用いられる.
使い方は以下の通りです
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.原型と継承:
まず変数を定義します.
for inサイクルは、オブジェクト内のすべての属性名を巡回します.このエニュメレーションプロセスには、関数とプロトタイプの属性が含まれています.オブジェクト内の属性の値が欲しいなら、hasOwnProttypeとtype ofが使用できます.
削除:delete演算子は、オブジェクトの属性を削除するために使用されます.オブジェクトに属性が含まれている場合、その属性は削除されます.プロトタイプチェーンのオブジェクトには触れません.削除対象の属性は、プロトタイプチェーンからの属性を表示させることができます.例えば、
11.グローバル汚染を減らす:
第一の方法:唯一のグローバル変数を作成し、残りのグローバル変数はすべてその属性です.
12.関数の実際のパラメータの個数が形式パラメータの個数を超えると、オーバーしたパラメータは無視されます.実際のパラメータが少なすぎると、欠落した値はundefinedに置き換えられます.
13.thisはオブジェクト指向プログラミングにおいて非常に重要であり、彼の値は呼び出しモードに依存します.javascriptには4中呼び出しモードがあります.
一つ目は、関数がオブジェクトの属性として保存されている場合の方法です.一つの方法が呼び出されたときに、オブジェクトにthisが結合されます.もし、式を呼び出すと、一つの属性を抽出する動作(一つの.式または下付き式を含む)が含まれるなら、一つの方法として呼び出されます.
たとえば:
第二に、関数コールモード:オブジェクトがオブジェクトの属性ではない場合、関数として呼び出されます.このモードで関数を呼び出すと、thisはグローバルオブジェクトにバインドされます.このようにすると、オブジェクトへのアクセスができなくなります.
この方法で変数を定義して、thisとしてコピーすると、内部関数は新たに与えられた変数を通じてthisにアクセスできます.
私たちはこの新たに与えられた変数をthatと呼びます.
たとえば:
このような形では、helperは、thisを通じてmyObjectオブジェクト内部の他の属性にアクセスできません.var that=thisを追加すると、double関数内部のthis割り当て値をthat変数に変換し、helper関数内部のコードをsono.logsに変更します.このようにmyObjectの内部コードに出力することができます.
appry方法は、私たちが呼び出された関数に渡すパラメータ配列を構築します.これは徐を潤します.thisの値を選択します.applyは二つのパラメータを受信します.最初はthisに結び付ける値です.このパラメータを設定することにより、関数の運転時の文脈を変更できます.thisの値です.nullに設定するか、または指定していない場合、thisはそれ自体を指定します.
2.Infinityは、すべての値が1.79769313486231570 e+308より大きいことを表しているので、Infinityは具体的な値がなく、集合です.
3.JavaScriptのすべての文字は16桁です.
4.以下に挙げた値は嘘として扱われます.
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.演算子優先度:上から下まで:
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はそれ自体を指定します.