面向對象的程序設計——明白對象

面向對象的程序設計

ECMA-262 把對象定義為:不必屬性的鳩合,其屬性能夠包括基礎值、對象或許函數。

明白對象

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 中有兩種屬性:數據屬性和接見器屬性,它們不能在JavaScript 中直接接見,範例把它們放在了兩對[[]]中心,如:[[Enumerable]]。

數據屬性
數據屬性是包括一個數據值的屬性,在這個位置能夠讀取和寫入值。4個特徵
[[Configurable]]:示意可否經由過程delete刪除屬性、可否修正屬性的特徵,可否把屬性修正為接見器屬性。默許true
[[Enumerable]:示意能經由過程for-in輪迴返回屬性。默許true
[[Writable]]:示意可否修正屬性值。默許true
[[Value]]:包括這個屬性的數據值。默許undefined
例:

var person = {
    name: "Nicholas"        //[[Value]]的特徵將這裏設置為"Nicholas",對這個值的任何修正都講迴響反映在這裏。
};

要修正默許特徵,要運用Object.defineProperty()要領。吸收三個參數:屬性地點的對象,屬性的名字和一個描述符對象。描述符對象必需是configurableenumerablewritablevalue
例:

var person = {};
Object.defineProperty(person,"name",{        //person:屬性地點的對象;name:屬性名;花括號內是描述符對象
    writable: false,            //只讀形式,true寫入形式
    value: "Nicholas"
});
person.name = "zhangsan";
alert(person.name);                //打印"Nicholas" 由於這邊是只讀形式

在挪用Object.defineProperty()時假如不指定configurableenumerablewritable,默許都是false

接見器屬性
接見器屬性不包括數據值,它們包括一對gettersetter函數。
getter:讀取接見器屬性挪用
setter:寫入接見器屬性挪用
4個特徵:
[[Configurable]]:示意可否經由過程delete刪除屬性、可否修正屬性的特徵,可否把屬性修正為接見器屬性。默許true
[[Enumerable]:示意能經由過程for-in輪迴返回屬性。默許true
[[getter]]:讀取接見器屬性挪用,默許undefined
[[setter]]:寫入接見器屬性挪用,默許undefined

    原文作者:UCCs
    原文地址: https://segmentfault.com/a/1190000014551348
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞