學習筆記7 js物件導向

2021-08-22 08:27:42 字數 2938 閱讀 3639

物件是無序屬性的集合

建立屬性object.defineproperty()

如果物件中不存在指定的屬性,object.defineproperty()就建立這個屬性。當描述符中省略某些欄位時,這些欄位將使用它們的預設值。擁有布林值的字段的預設值都是false。value,get和set欄位的預設值為undefined。乙個沒有get/set/value/writable定義的屬性被稱為「通用的」,並被「鍵入」為乙個資料描述符。

資料屬性訪問器屬性

資料屬性

[[configurable]]表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬。直接在物件上定義的屬性,預設值true

[[writeble]]預設值true

[[enumerable]]表示能否通過for-in迴圈返回屬性。直接在物件上定義的屬性,預設值true

[[writable]]表示能否修改屬性的值,直接在物件上定義的屬性,預設值true

[[value]]包含這個屬性的資料值\

要修改屬性預設的特性,必須使用object.defineproperty()方法。這個方法接受三個引數:屬性所在的物件,屬性的名字,描述符物件(必須是configurable,enumerable,writable和value)。

var person = {};

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

//nicholas

console.

log(person.name);

//非嚴格模式,賦值被忽略,嚴格模式下,賦值操作拋錯

person.name =

"xiaohong";

//nicholas

console.

log(person.name);

一旦將configurable設定為false,表示不能從物件中刪除屬性,不能再把configurable設定為true。修改除writable之外的特性都會導致錯誤。

object

.defineproperty(person, "name", );

object

.defineproperty(person, "name", );

訪問器屬性

訪問器屬性不包含資料值;包含一對getter和setter函式。在讀取物件的某個屬性時,會呼叫這個屬性的getter函式。在修改物件的某個屬性時,會呼叫這個屬性的setter函式。

訪問器屬性有如下4個特性:

[[configurable]]:表示能否通過 delete 刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為資料屬性。

[[enumerable]]:表示能否通過 for-in 迴圈返回屬性。

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

[[set]]:在寫入屬性時呼叫的函式。預設值為 undefined。訪問器屬性不能直接定義,必須使用 object.defineproperty() 來定義。

訪問器屬性常用於:設定乙個屬性值導致另乙個屬性值的變化。

只指定getter,屬性不能寫,在非嚴格模式下賦值會被忽略,嚴格模式下回拋錯。

只指定setter,屬性不能寫,在非嚴格模式下返回undefined,嚴格模式下回拋錯。

object.defineproperty()定義多個屬性

object.getownpropertydescriptor()

接收兩個引數: 1 屬性所在的物件, 2 要讀取的描述符的屬性名稱

返回: 乙個物件

如果是資料屬性,這個物件有屬性有,configurable, enumerable,writable,value

如果是訪問器屬性,這個物件有屬性有,configurable, enumerable,get,set

var book = {};

object.defineproperties(book, ,

建立資料屬性

edition: ,

//建立訪問屬性

year: ,

set: function

(newvalue) }}

});//讀取資料屬性

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

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

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

console.log(descriptor.get);//undefined

//讀取訪問屬性

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

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

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

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

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

JS學習筆記 物件導向

類 物件 類 模子 物件 產品 成品 蛋糕 物件 模子 類 array 類 arr 物件 array.push 錯 arr.push 對 new arr 錯 原型prototype 是加到類上面,而不是物件。混合方式構造物件 方法都是相同的,屬性都是不同的。方法 函式 屬性 變數 用 建構函式 加 ...

03學習 JS物件導向筆記

1.原型 prototypr 原型屬性 2.繼承 3.原型鏈 prototypr 原型屬性 constructor 建構函式 prototypr 原型屬性 為什麼使用原型?原型可以達到繼承的目的 function person person.prototype.name shaozhu person...

JS學習筆記 物件導向基礎

今天溫習了js的物件導向的知識,對這方面的知識做一次總結。首先是要理解物件和類。物件可以理解為乙個具體的實物,比如乙個人。而人有吃飯 睡覺等特性,把具有相同特性的物件進行分類,例如人類。物件和類的關係就是物件是類中某一具體的個體,類是許多具有相同特徵物件的抽象。物件由屬性和方法組成,通常在程式設計中...