物件屬性特性(可寫,可列舉,可配置)

2022-05-15 01:03:47 字數 1956 閱讀 2159

物件屬性的特性

var obj1 = new

object();

object.defineproperty(obj1,"y",);

分析:首先 第一行**var obj1 = new

object(),表示建立乙個空物件,相當於

var obj1 =;

{} 叫做 物件字面量

前提是new object()中沒有傳入引數,才與{}一樣

object.defineproperty(obj, prop, descriptor)方法會直接在乙個物件上定義乙個新屬性,或者修改乙個物件的現有屬性, 並返回這個物件。

在這兒,obj1 要定義屬性的物件,要修改的屬性名稱 y , descriptor 將被定義或修改的屬性描述符(三個,預設都是false)。

其中 :三個描述分別是

writeable:表示是否能修改屬性的值

enumerable:表示能否通過for-

in迴圈返回屬性,代表屬性是否可列舉

configurable:是否能通過delete刪除屬性從而重新定義屬性,能否修改屬性的三個特性,或者能否把屬性修改為訪問器屬性,直接在物件上定義屬性。

檢視找乙個不存在的屬性,可通過get(儲存器屬性)

比如這裡通過字面量形式建立person物件,有名字,性別屬性

var person =,

set age( val ) ;

console.log( person.username); // king

console.log( person.age) ; 12

當執行到console(person.age)**行時,person.age 試圖找到不存在的 age 屬性,如果想要得到age屬性,在person物件裡,前面寫上get關鍵字 ,即可得到age的返回值。 所以,當想要得到age的值的時候,會自動呼叫寫好的 get age(){}方法

如果想要設定age屬性的值:

person.age = 13;

console.log( person.age); //輸出 :不能設定13

defineproperty方式建立屬性並新增描述

var obj={}

object.definedproperty(obj,

"x",

});defineproperties 方式建立多個屬性並新增描述

通過字面量以及defineproperty的方法設定屬性只能乙個乙個設定,其實可以用object的property屬性設定多個

var person = {};

object.defineproperties(person,, //注意 逗號

age :

});console.log(person.user);//king

console.log(person['age']); 訪問屬性,可直接寫名字,也可以加上,當名字有破折號,就必須加上了,比如person[first-name]

console.log( object.getownpropertydescriptor(person,"user") );

得到person物件的user屬性的描述,返回結果是:

object

console.log(object.getownpropertydescriptor(person,"age"));

得到person物件的age屬性的描述,返回:

object

定義age屬性的時候,省略了enumeralb 和configurable的屬性描述,所以返回時可以看到,預設是false

如果在person物件裡面加上:

person.addr = "北京 「;

console.log(object.getownpropertydescriptor(person,"addr"

));返回結果三個屬性描述都是true;

前端複習 物件的可列舉屬性

初學時,並不是很注意這些細節的東西,但是程式設計師寫 的時候,怎麼會容忍胡而麻三的記憶.1 for in 語句的複習 問題引出 var function colored colored prototype var obj new colored for var prop in obj output ...

js物件可擴充套件性和屬性的四個特性(下)

1 用指定物件作為原型建立物件object.create 說明 const log console.log 返回資料資料的描述 var aa object.create log aa log object.getownpropertydescriptor aa,y 2 刪除物件屬性delete說明 ...

ES6 物件的擴充套件 屬性的可列舉性和遍歷

可列舉 物件的每乙個屬性都有乙個描述物件,用來控制該屬性的行為。object.getownpropertydescriptor 方法可以獲取該屬性的描述物件。let obj object.getownpropertydescriptor obj,foo 描述物件的 enumerable 屬性,稱為 ...