説明
チェンシャオは、コラムオープンオタク時にこの主要な仕上げ私の研究ノートをフロントエンドでない(冬) - 学びを再。侵害した場合、私に連絡し、あなたに感謝してください。
JavaScriptのオブジェクト機能
- 二つの同一のオブジェクト、また同じ目的:を有するオブジェクトの一意の識別子
- 意志で異なる状態で同じオブジェクト:オブジェクトが状態を持っています
- 状態の動作では、オブジェクトを変更することができます動作するオブジェクト
オブジェクトの一意性は、全ての固有の識別と、メモリアドレス、一意のIDを持つオブジェクトのメモリアドレスに具現されます。
var o1 = { a: 1 };
var o2 = { a: 1 };
console.log(o1 == o2); // false
复制代码
物体の挙動状態は内部JSにおけるオブジェクトのプロパティです。
var o = {
d: 1,
f() {
console.log(this.d);
}
};
复制代码
オブジェクトは動的であるJSでは、実行時にオブジェクトにプロパティを追加することができます。
var o = { a: 1 };
o.b = 2;
console.log(o.a, o.b); //1 2
复制代码
javascriptオブジェクトの属性の二つのタイプ
JSでは、プロパティは、単純な名前と値ではありません機能(属性)のセットで説明したプロパティ(プロパティ)JS
前記4つのデータ属性
- 値:プロパティの値
- 書き込み可能:プロパティを割り当てることができるかどうか
- enumrable:中に使用される属性を列挙することができます
- 設定可能:削除または変更することができます
請求項4アクセサ(ゲッター/セッター)の特性
- ゲッター:関数または未定義のは、属性値が取られたときに呼び出されます
- セッター:機能または未定義、彼らは呼んでいたときに、プロパティ値を設定します
- enumrable:中に使用される属性を列挙することができます
- 設定可能:削除または変更することができます
アクセスプロパティこのような特性は、完全に異なる値を取得し、ユーザが属性を読み書きすることを可能にする、読み取り時にコードを実行して書き込むためには、それは糖衣構文の機能と見なすことができます。
私たちは通常、あなたがgetOwnPropertyDescriptorを表示するために使用することができ、trueに設定可能なデフォルト、列挙、書き込み可能なデータ属性を生成するために使用されるコードの属性を定義します
var o = { a: 1 };
o.b = 2;
//a 和 b 皆为数据属性
Object.getOwnPropertyDescriptor(o,"a") // {value: 1, writable: true, enumerable: true, configurable: true}
Object.getOwnPropertyDescriptor(o,"b") // {value: 2, writable: true, enumerable: true, configurable: true}
复制代码
私たちは財産の特性を変更したり、アクセサプロパティを定義したい場合は、我々はのDefinePropertyを使用することができます
var o = { a: 1 };
Object.defineProperty(o, "b", {value: 2, writable: false, enumerable: false, configurable: true});
//a 和 b 都是数据属性,但特征值变化了
Object.getOwnPropertyDescriptor(o,"a"); // {value: 1, writable: true, enumerable: true, configurable: true}
Object.getOwnPropertyDescriptor(o,"b"); // {value: 2, writable: false, enumerable: false, configurable: true}
o.b = 3;
console.log(o.b); // 2
复制代码
あなたがオブジェクトを定義するときは、getおよびsetアクセサプロパティを定義するためのキーワードを使用することができます
var o = {
get a(){return 1}
}
console.log(o.a)
复制代码
異なるデータ属性を持つアクセスプロパティは、各訪問は、プロパティのゲッターやセッターの機能を実行されます。ここでは、すべてのOAは1を返し、ゲッター関数は1を返します
データは、固有値や属性値アクセサ属性値を前記実行時にJSのオブジェクト、「プロパティを設定し、」文字列や記号がキーにプロパティです、
ます。https://juejin.im/post/5d0b9af45188251627587961で再現