対象に向けたプログラミング——対象を理解する


オブジェクト指向プログラミング
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()configurableenumerablewritableでなければならない.例:
var person = {};
Object.defineProperty(person,"name",{        //person:       ;name:   ;          
    writable: false,            //    ,true    
    value: "Nicholas"
});
person.name = "zhangsan";
alert(person.name);                //  "Nicholas"          
呼び出しvalue時には指定Object.defineProperty()configurableenumerable、デフォルトはwritable.
アクセス器属性のアクセス器属性は、ペアfalseおよびgetter関数を含むデータ値を含まない.setter:アクセス属性呼び出しgetter書き込みアクセス属性呼び出しの4つの特性:setter:アクセス・属性の削除、属性の変更の可否を示す特性を、アクセス器属性に変更することができますか?デフォルト[[Configurable]].delete:経由可能trueループバック属性を表します.デフォルト[[Enumerable].for-in:リーダ属性呼び出し、デフォルトtrue.[[getter]]:書き込みアクセス属性呼び出し、デフォルトundefined.