対象に向けたプログラミング——対象を理解する
2216 ワード
オブジェクト指向プログラミング
ECMA-622は、オブジェクトを属性なしのセットと定義し、その属性は基本値、オブジェクトまたは関数を含むことができます.
オブジェクトを理解する
ECMAScriptには2つの属性があります.データ属性とアクセス器属性はJavaScriptに直接アクセスできません.仕様はそれらを2対の[]の間に置いています.例えば、[Enumerable].
データ属性データ属性は、1つのデータ値を含む属性であり、この位置で値を読み取り、書き込みすることができます.4つの特性
アクセス器属性のアクセス器属性は、ペア
ECMA-622は、オブジェクトを属性なしのセットと定義し、その属性は基本値、オブジェクトまたは関数を含むことができます.
オブジェクトを理解する
var person = new Object(); //
person.name = "Nicholas"; //
person.age = 29;
person.job = "teacher";
person.sayName = function(){ // ,this ;this new Objecy() ;this , person.sayName() person , this 。
alert(this.name);
};
属性の種類ECMAScriptには2つの属性があります.データ属性とアクセス器属性はJavaScriptに直接アクセスできません.仕様はそれらを2対の[]の間に置いています.例えば、[Enumerable].
データ属性データ属性は、1つのデータ値を含む属性であり、この位置で値を読み取り、書き込みすることができます.4つの特性
[[Configurable]]
:属性を削除することができるかどうか、属性を変更することができるかどうかを示す特性を、アクセス器属性に属性を変更することができますか?デフォルトdelete
.true
:経由可能[[Enumerable]
ループバック属性を表します.デフォルトfor-in
.true
属性値を変更できるかどうかを示す.デフォルト[[Writable]]
.true
:この属性を含むデータ値.デフォルト[[Value]]
.例:var person = {
name: "Nicholas" //[[Value]] "Nicholas", 。
};
デフォルトの特性を変更するには、undefined
方法が必要です.3つのパラメータを受信します.属性があるオブジェクト、属性の名前、および記述子オブジェクトです.ディスクリプタオブジェクトは、Object.defineProperty()
、configurable
、enumerable
、writable
でなければならない.例:var person = {};
Object.defineProperty(person,"name",{ //person: ;name: ;
writable: false, // ,true
value: "Nicholas"
});
person.name = "zhangsan";
alert(person.name); // "Nicholas"
呼び出しvalue
時には指定Object.defineProperty()
、configurable
、enumerable
、デフォルトはwritable
.アクセス器属性のアクセス器属性は、ペア
false
およびgetter
関数を含むデータ値を含まない.setter
:アクセス属性呼び出しgetter
書き込みアクセス属性呼び出しの4つの特性:setter
:アクセス・属性の削除、属性の変更の可否を示す特性を、アクセス器属性に変更することができますか?デフォルト[[Configurable]]
.delete
:経由可能true
ループバック属性を表します.デフォルト[[Enumerable]
.for-in
:リーダ属性呼び出し、デフォルトtrue
.[[getter]]
:書き込みアクセス属性呼び出し、デフォルトundefined
.