物件導向的程式設計 理解物件

2022-02-26 07:00:34 字數 3641 閱讀 4209

理解物件

建立自定義物件的最簡單方式就是建立乙個object的例項,然後再為它新增屬性和方法

1

var person = new

object();

2 person.name = "nicholas";

3 person.age = 29;

4 person.job = "software engineer";

5 person.sayname = function

();

建立物件的首選模式是物件字面量方式

1

var person =

8 };

屬性型別

資料屬性包含乙個資料值的位置。在這個位置可以讀取和寫入值。資料屬性有4個描述其行為的特性

[[configurable]]:表示能否通過delete輸出屬性從而定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性,預設值為true

[[enumerable]]:表示能否通過for-in迴圈返回屬性,預設值為true

[[writable]]:表示能否通過修改屬性的值,預設值為true

[[value]]:包含這個屬性的資料值,讀取屬性值的時候,從這個位置讀;寫入屬性值的時候,把新值儲存在這個位置

要修改屬性預設的特性,必須使用ecmascript5的object.defineproperty()這個方法.這個方法接受三個引數:

屬性所在的物件、屬性的名字和乙個描述符物件

1

var person ={};

2 object.defineproperty(person,"name",);

67 console.log(person.name); //

" nicholas"

8 person.name = "oreg";

9 console.log(person.name); //

" nicholas"

把donfigurable設定為false,表示不能從物件中刪除屬性。一旦把屬性定義為不可配置的,就不能再把它變回可配置的了。此時,在呼叫object.defineproperty()方法修改處writable之外的特性,都會導致錯誤

1

var person ={};

2 object.defineproperty(person,"name",);67

//丟擲錯誤

8 object.defineproperty(person,"name",);

在呼叫object.defineproperty()方法時,如果不指定,configurable、enumerable和writable特性的預設值都是false

2、訪問器屬性

訪問器屬性不包含屬性值;他們包含一對兒getter和setter函式,在讀取訪問器屬性時,會呼叫setter函式,這個函式負責返回有效的值,在寫入訪問器屬性時,會呼叫getter函式,並傳入新值,這個函式決定如何處理資料。訪問器屬性有如下4個特性

[[configurable]]:表示能否通過delete輸出屬性從而定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性,預設值為true

[[enumerable]]:表示能否通過for-in迴圈返回屬性,預設值為true

[[get]]:在讀取屬性時呼叫的函式。預設值為undefined

[[set]]:在寫入屬性時呼叫的函式。預設值為undefined

訪問器屬性不能直接定義,必須使用object.defineproperty()來定義。

1

var book =;

56 object.defineproperty(book,"year",,

10 set: function

(newvalue) 15}

16});

1718 book.year = 2005;

19 console.log(book.edition); //

2

這是使用訪問器的常見方式,即設定乙個屬性的值會導致其他屬性發生變化,year前面的下劃線是一種

常用的記號,用於表示只能通過物件方法訪問的屬性

不一定非要同時指定getter和setter。只指定getter意味著屬性是不能寫的,只指定setter函式的屬性

也不能讀

兩個非標準的方法:__definegetter__()和__definesetter__()

1

var book =;

56 book.__definegetter__("year",function

());

9 book.__definesetter__("yeat",function

(newvalue)

14});

1516 book.year = 2006;

17 console.log(book.year);

定義多個屬性

1

var book ={};23

object.defineproperties(book,,

7edition: ,

10year: ,

14 set: function

(newvalue)19}

20}21 });

讀取屬性的特性

1

object.getownpropertydescriptor()方法,可以取得給定屬性的描述符23

var book ={};45

object.defineproperties(book,,

9edition: ,

12year: ,

16 set: function

(newvalue)21}

22}23});

2425

var descriptor = object.getownpropertydescriptor(book,"_year");

26 console.log(descriptor.value); //

2004

27 console.log(descriptor.configurable); //

false

28 console.log(typeof descriptor.get); //

"underfined"

2930

var descriptor = object.getownpropertydescriptor(book,"year");

31 console.log(descriptor.value); //

underfined

32 console.log(descriptor.enumerable); //

false

33 console.log(typeof descriptor.get); //

"function"

物件導向 OO 的程式設計 理解物件

建立自定義物件的最簡單方法為建立 object 的例項,並新增屬性方法,也可以使用物件字面量 訪問器屬性包括 getter 和 setter 函式,讀取訪問器屬性時,呼叫 getter 函式,寫入訪問器屬性時,呼叫 setter 屬性 1 var people 56 object.definepro...

物件導向程式設計的理解

面向著具體的每乙個步驟和過程,把每乙個步驟和過程完成,然後由這些功能方法相互呼叫,完成需求。當需求單一,或者簡單時,我們一步一步去操作沒問題,並且效率也挺高。可隨著需求的更改,功能的增多,發現需要面對每乙個步驟很麻煩了,這時就開始思索,能不能把這些步驟和功能在進行封裝,封裝時根據不同的功能,進行不同...

8 理解物件導向程式設計

4.物件導向程式設計 object oriented programming,oop object oriented design,ood 什麼是物件導向?在物件導向程式設計中有兩個重要的概念 類 class 與物件 object 5.類 類是一種抽象的概念,類中包含了資料 通常使用名詞來表示 與對...