第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于JavaScript數(shù)據[[屬性特性]]的疑問

關于JavaScript數(shù)據[[屬性特性]]的疑問

素胚勾勒不出你 2018-12-06 18:45:48
根據《JavaScript高級程序設計(第3版)》中的介紹,139頁6.1.1“屬性類型”中,對屬性特性的描述是這樣的: 特性標簽 默認值 說明 [[Configurable]] true 能否通過delete刪除屬性從而重新定義屬性、能否修改屬性特性、能否把數(shù)據屬性修改為訪問器屬性。 [[Enumerable]] true 能否通過for-in循環(huán)返回屬性 [[Writable]] true 能否修改屬性值 [[Value]] undefined 包含這個屬性的數(shù)據值 ?“要修改屬性默認的特性,必須使用ECMAScript5的Object.defineProperty()方法?!?? 下面做一組實踐: alert后的注釋內容為彈出窗口的實際內容。 /*不使用Object.defineProperty()方法的情況*/ var person={ name:"Nicholas" }; alert(person.name); //Nicholas person.name="Greg"; alert(person.name); //Greg delete person.name; alert(person.name); //undefined ↑這符合常規(guī)邏輯。 /*屬性值在Object.defineProperty()方法中定義的情況*/ var person={}; Object.defineProperty(person,"name",{ value:"Nicholas" }); alert(person.name); //Nicholas person.name="Greg"; alert(person.name); //Nicholas delete person.name; alert(person.name); //Nicholas ↑可以看到,在方法中定義屬性值后,該屬性值不可改且無法被刪除。這與書中特性的默認值為true似乎相悖。 /*在Object.defineProperty()中顯式定義[[configurable]]、[[writable]]為true后的情況*/ var person={}; Object.defineProperty(person,"name",{ configurable:true, writable:true, value:"Nicholas" }); alert(person.name); //Nicholas person.name="Greg"; alert(person.name); //Greg delete person.name; alert(person.name); //undefined ↑顯式定義[[configurable]]、[[writable]]特性為true后,才與第一種情況一樣。 ? 以上測試基于火狐瀏覽器23.0.1和IE11瀏覽器,alert后的注釋內容即為彈出窗口顯示結果。 ? 這似乎應該總結如下:在沒使用Object.defineProperty()方法時,數(shù)據屬性的[[configurable]]、[[writable]]等特性默認值為true。而使用了Object.defineProperty()方法設置屬性值后,[[configurable]]、[[writable]]等特性的默認值即變?yōu)閒alse。不顯式的設置它們的值為true,則該屬性即為不可寫、不可刪。 ? 不知以上總結是否正確,這里面又蘊含什么規(guī)律?書本僅說明這些特性的默認值為true是否忽略了一些情況? 本人為在校大學生,虛心請教各位大神。
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

自己實踐出來就沒錯了,書只是參考。還有它指的默認值應該是針對對象字面量這種方式創(chuàng)建的對象,而不是Object.defineProperty

?

var o = {};
o.a = 1;

等同

Object.defineProperty(o, "a", {value : 1,
                               writable : true,
                               configurable : true,
                               enumerable : true});

=============================

Object.defineProperty(o, "a", {value : 1});

等同

Object.defineProperty(o, "a", {value : 1,
                               writable : false,
                               configurable : false,
                               enumerable : false});
查看完整回答
反對 回復 2018-12-24
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

沒用過,平時的開發(fā)中很少用,所以不清楚。。。

查看完整回答
反對 回復 2018-12-24
  • 2 回答
  • 0 關注
  • 530 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號