いくつかの注意点1.オブジェクト簡単に
数値、文字列、ブール値、NULL値、および未定義の値:JavaScriptは、いくつかの単純なデータ型を持っています。残りのすべての値に加えて(アレイ、機能、さらには正規表現を含む)を目的とします。((彼らはメソッドを持っているので)、数値、文字列、および表面のブール値がオブジェクトであるが、彼らは不変ですが、JavaScriptの数、文字列、またはブール値を参照して、新しい番号()、新しいStringを呼び出すことによって ) プロトタイプから継承された独自の方法を得られる数値、文字列、ブールオブジェクトを変換するために、及び新しいブール()コンストラクタ。基本データ型は、変更することはできませんので、それを指すように何のポインタがない場合、それは自動的に解放されたメモリ資源に占める、およびオブジェクトが参照によって渡されていない、オブジェクトの値を変更し、それはそれを変更しましたメモリの値。
注:理論的には、NULL値がNULL値である、オブジェクトとして検出されてはならないが、実際には、JavaScriptのエラーを設計することにより、typeof演算ヌル===「オブジェクト」という事実です。
ヌル値をテストするときしたがって、このような===真:! NULLとして他の方法を使用することを試みます。例えば、新たに取得したDOMオブジェクトが正常な状態になるかどうかを検出するために、我々は次のコードを使用する必要があります。
1つの VARの要素=のdocument.getElementById( "要素ID" )。 2 なら(要素){} 3 // 或者IF(!ELEMENT){}
代わりに:
1つの VARの要素=のdocument.getElementById( "要素ID" )。 2 であれば(typeof演算要素!== "オブジェクト" ){} 3 // 或者場合(typeof演算要素=== "オブジェクト"){}
ステートメントは、通常の結果取得に応じて作用する場合、(すなわち、ヌルである)素子が正常に取得されていない場合でも、次のコードように、「オブジェクト」=== typeof演算ヌルため、上記話します。
2.オブジェクト属性
オブジェクトの存在の意味は、それが多くのプロパティを持つことができ、方法はロジックを表現するために私たちを助けることです。オブジェクトの属性は、任意の値が数値、文字列、ブール値、ヌル値、またはオブジェクトの関数とすることができる(もちろん、関数は本質的オブジェクトである)とすることができるかもしれません。それが定義されている場合、プロパティを出力するが、ヌル値、それが出力対応ヌル、それが定義されていない場合でも、未定義の対応する出力。
我々は最初のリテラル、便利以降のテストでオブジェクトを定義します。
1つの VARのゲーム= { 2 名: "ミニWarior" 、 3 ID:201907271234 、 4 資格:{ 5 タイプ: "テスト" 6 } 7 }
我々は、最も一般的な値の更新と検索を変更することで、一般的に物体の特性に動作CURDあります。
オブジェクトのプロパティを変更、更新、我々は直接代入文を使用することができます。取得して二つの方法で、オブジェクトの一般的なプロパティを取得:まず、それはよりコンパクトで読みやすく、最も一般的に使用されているので: VARの GAMENAME = game.name; 我々は呼んで(ここではポイント↘) 。表現、第二、同じアレイに対応するように目標値を得る: VaRの GAMENAMEゲーム= [「名前」]; 。プロパティ値を取得する取得する場合、私たちは、財産の状況が存在しないアカウントに取らなければならない、この時間は、私たちは巧み演算子は、デフォルト値を埋めることができます: VAR GameName = game.name ||「ミニWarior」; 。game.name取得値がnullまたは未定義の値である場合には、この時間は、gameNameは、実行するために、後続のコードに影響を与えずに、必要な初期値が割り当てられます。我々のような性質から、未定義の値にしようと VAR gameQualiPlayer = game.qualification.player; 、JavaScriptは間違った「TypeError例外を」スローされますと、私たちは巧み&&演算子を使用することができます: VAR gameQualiPlayer = game.qualification &&をgame.qualification.player; エラーを避けるが、結果は未定義値外にまだあります。
いくつかの不要な属性を扱う場合(例えば、プロトタイプチェーン上のプロパティ)、私たちは外に加えて、typeofをキーワードを使用し、Object.prototype.hasOwnProperty()メソッドを使用する方法があります。このメソッドは、パラメータは現在のオブジェクトに充填されたブール値を返します。オブジェクトを移動する際に、デフォルトの文でプロパティにプロトタイプチェーンを横断するために、より一般的な使用法は、文のために使用されています。プロトタイプチェーン上のプロパティは、開発プロセスで他の人に変更され、あなたがわからない場合は、不可解なエラーが発生します。したがって、この方法を使用すると、使用中に、より安全になるときfor文:
1人の VARのプレイヤー= { 2 名: 'Lynの' 、 3 年齢:19 、 4 性別: '男性' 5 }。 6 7 VaRの playerPropertyName = []; 8 VARの playerProperty = []; 9 10 のための(VARのキーでプレイヤー){ 11 playerPropertyName.push(I)。 12 playerProperty.push(プレイヤ[I])。 13 }
属性に上記のコードキープレーヤーは、playerPropertyNameアレイに格納された属性の値は、プレイヤplayerPropertyアレイに記憶されます。次の新しいプロパティがObject.prototype.hasOwnProperty()フィルターを使用して、プロトタイプチェーン内にプレーヤーに追加されました:
1人の VARのプレイヤー= { 2 名: 'Lynの' 、 3 年齢:19 、 4 性別: '男性' 5 }。 6 player.prototype.playGame = 'ミニWarior' ; 7 8 VARの playerPropertyName = []; 9 VARの playerProperty = []; 10 11 のための(VARのキーでプレイヤー){ 12 であれば(player.hasOwnProperty(キー){ 13 playerPropertyName.push(I); 14 playerProperty.push(プレイヤ[i])と」 15 } 16 }
したがって、トラバーサル中に、アレイ内に格納され、対応するキーと値をplayGameないであろう。
オブジェクトのいくつか列挙可能な特性、およびいくつかの非可算。この文でのオブジェクトを横断するとき、我々はすべての列挙プロパティやメソッドの上に使用していたと同じように影響を受けるので、我々はあなたがtypeof演算キーワードまたはhasOwnPropertyをメソッドをフィルタリングするために使用することができます言及されます。しかし、我々は、我々は、アレイ、出力を作成し、JavaScriptがArrayオブジェクトである、知っている、あなたは非可算長さ属性(そしてもちろんの原型)があり、値が値である、配列のインデックスがキーであるでしょう。この場合、我々は、lengthプロパティには影響しません文で使用します。声明の中での方法とプロトタイププロパティを横断するだけでなく、簡単ですが、それは属性名の順序を制御することはできませんので、我々はベストプラクティスは、閉鎖の話当然の声明(、にfor文の代わりに共通の使用すべきトラバースのために、我々文に発見される)も完璧ではありませんが、少なくともそれが横断中のためのより良い、ほとんどの場合です。
オブジェクトのプロパティを削除するには、我々はdelete演算子を使用するように、注意すべきポイントは、それがコンテンツにプロトタイプチェーンには触れませんが、このオブジェクトのプロパティを削除することで、プロトタイプチェーンを行うことができるプロパティが出てくる:我々を仮定しますプロパティのニックネームを持っている選手オブジェクトがあります:「Lyn(リン)」には、そのプロトタイプニックネームの性質を持っている:「ベン」、後に 削除 player.nickname; 、出力値はベンをplayer.nickname。
オブジェクトは、私たちはスケーラブルで、再利用可能な高品質なJavaScriptライブラリを作成するのに役立ちます。もちろん、いくつかの重要な概念とオブジェクトが存在するが、オブジェクトのプロトタイプチェーンを作成している。しかし、それはについての新しいブログの記事に私たちの価値があります。