ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクトの使用法
はじめに: JavaScript は、プロトタイプメカニズムによる継承と、「クロージャ」およびその他のメソッドによるカプセル化を実装するオブジェクト指向言語です。 この記事では、JavaScript オブジェクトの特殊な機能 (プロトタイプ チェーン、参照、リフレクション、プロパティ トラバーサル、その他の機能) について説明します。
1. オブジェクトの作成
JavaScript には非常に直感的な方法でオブジェクトを作成できます:
var emptyObject = {};
name: 'harttle',
age: 24
}; new Object();
xx.name = 'hartle';
xx.age = 24;
2. 属性へのアクセス
person.age
person['age']
属性name が存在しない場合、JavaScript はプロトタイプ チェーンに沿って検索します。 割り当てではプロパティを更新または作成でき、プロパティは delete person.age によって削除できます。
未定義の属性を取得すると TypeError が発生しますが、通常は && によって解決されます。
3. プロトタイプ
JavaScript のプロトタイプ継承メソッドは少し面倒ですが、ES6 では Object.create メソッドが提供され、プロトタイプ継承がより簡単になります。
その実装はおおよそ次のようになります:
if (typeof Object.create !== 'function') {
Object.create = function (o) {
var F = function () {};
F.prototype = o ;
return new F(); プロパティは影響を受けません。
オンラインで person.age = unknown を渡して属性を削除する方法は、実際には、値が unfine の属性を作成するのと同じです。 delete person.age は、そのプロパティが宣言されなかったかのように、実際にはプロパティを削除します。
例:
var prot = { name: 'harttle' };
// prot に基づいて p を作成します
var p = Object.create(prot); // p.name === ' harttle'、プロトタイプチェーンのオブジェクトプロパティは影響を受けません
p.name = unknown; // p.name === 未定義
delete p.name; // p.name === 'harttle'、プロトタイプが取得されます。
未定義は、基本データ型未定義に属します。この型には、未定義の値が 1 つだけあります。
4. オブジェクト参照
JavaScript のオブジェクトは参照によって渡され、コピーされません:
a.name = 'harttle';
b.name === 'harttle' / / true
プロトタイプを介して継承する場合、プロトタイプも参照としてプロトタイプ チェーンに入り、プロトタイプのプロパティはコピーされません:
var prot = {girl: {name: 'alice'}};
var p1 = Object.create (prot) ;
var p2 = Object.create(prot);
p1.girl.name = 'fuck'; // p2.girl.name === 'fuck'
プロトタイプの関係はダイナミックな関係。
5. リフレクション
JavaScript は動的言語です。Typeof は実行時に型情報を取得するために使用できます:
typeof p.age function'、プロトタイプから: Object.prototype
typeof p.wing // 'unknown'
もちろん、 typeof の機能は限られており、基本的なデータ型のみをチェックできます。 オブジェクト指向設計をサポートするには、より複雑な型判定メカニズムが必要です。「JavaScript の型を確認するには?」を参照してください。一つの記事。
6. 属性トラバーサル
for(var prop in person){
console.log( p [prop);
}
現在のオブジェクトのプロパティのみを取得するには、hasOwnProperty:
for(var prop in person){
if(person.hasOwnProperty(prop)){
コンソールを使用して判断できます。 log(p[prop) ;
}
}
for in は属性の順序を保証する必要がない場合は、代わりに Array を使用できます。 また、プロトタイプから特性を判断することも避けられます。
7. グローバル変数を避ける
グローバル変数への依存は、JavaScript の設計上の欠陥の 1 つです。グローバル変数の使用を回避する方法は数多くありますが、最も簡単な方法は、プロジェクトにグローバル変数を 1 つだけ定義することです:
var APP = {};
APP.foo = 'xxx'; bar = 'xxx';
これにより、一見したところ、APP.foo はグローバル変数であるため、コードの保守と変更が容易になります。