国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ECMAScript中有兩種屬性:數(shù)據(jù)屬性和訪問(wèn)器屬性。

objc94 / 1576人閱讀

摘要:數(shù)據(jù)屬性數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置。數(shù)據(jù)屬性有個(gè)描述其行為的特性。表示能否通過(guò)刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問(wèn)器屬性。其中,描述符對(duì)象的屬性必須是和。

ECMA-262定義這些特性是為了實(shí)現(xiàn)JavaScript引擎用的,因此在JavaScript中不能直接訪問(wèn)它們。為了表示特性是內(nèi)部值,該規(guī)范把它們放在了兩對(duì)兒方括號(hào)中,例如 [[Enumerable]] 。

ECMAScript中有兩種屬性:數(shù)據(jù)屬性和訪問(wèn)器屬性。

1. 數(shù)據(jù)屬性

數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置。在這個(gè)位置可以讀取和寫(xiě)入值。數(shù)據(jù)屬性有4個(gè)描述其行為的特性。

[[Configurable]] :表示能否通過(guò) delete 刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問(wèn)器屬性。像前面例子中那樣直接在對(duì)象上定義的屬性,它們的這個(gè)特性默認(rèn)值為 true 。

[[Enumerable]] :表示能否通過(guò) for-in 循環(huán)返回屬性。像前面例子中那樣直接在對(duì)象上定義的屬性,它們的這個(gè)特性默認(rèn)值為 true。

[[Writable]] :表示能否修改屬性的值。像前面例子中那樣直接在對(duì)象上定義的屬性,它們的這個(gè)特性默認(rèn)值為 true 。

[[Value]] :包含這個(gè)屬性的數(shù)據(jù)值。讀取屬性值的時(shí)候,從這個(gè)位置讀;寫(xiě)入屬性值的時(shí)候,把新值保存在這個(gè)位置。這個(gè)特性的默認(rèn)值為 undefined 。

對(duì)于像前面例子中那樣直接在對(duì)象上定義的屬性,它們的[[Configurable]] 、 [[Enumerable]] 和 [[Writable]] 特性都被設(shè)置為 true ,而 [[Value]] 特性被設(shè)置為指定的值。

例如:

var person = {
    name: “Nicholas”
};

這里創(chuàng)建了一個(gè)名為 name 的屬性,為它指定的值是 “Nicholas” 。也就是說(shuō), [[Value]] 特性將被設(shè)置為 “Nicholas” ,而對(duì)這個(gè)值的任何修改都將反映在這個(gè)位置。

要修改屬性默認(rèn)的特性,必須使用ECMAScript 5的 Object.defineProperty() 方法。這個(gè)方法接收三個(gè)參數(shù):屬性所在的對(duì)象、屬性的名字和一個(gè)描述符對(duì)象。其中,描述符(descriptor)對(duì)象的屬性必須是: configurable 、 enumerable 、 writable 和value 。設(shè)置其中的一或多個(gè)值,可以修改對(duì)應(yīng)的特性值。

例如:

var person = {};
Object.defineProperty(person, “name”, {
    writable: false,
    value: “Nicholas”
});
alert(person.name); //“Nicholas”
person.name = “Greg”;
alert(person.name); //“Nicholas”

這個(gè)例子創(chuàng)建了一個(gè)名為 name 的屬性,它的值 “Nicholas” 是只讀的。這個(gè)屬性的值是不可修改的,如果嘗試為它指定新值,則在非嚴(yán)格模式下,賦值操作將被忽略;在嚴(yán)格模式下,賦值操作將會(huì)導(dǎo)致拋出錯(cuò)誤。類似的規(guī)則也適用于不可配置的屬性。

例如:

var person = {};
Object.defineProperty(person, “name”, {
    configurable: false,
    value: “Nicholas”
});
alert(person.name); //“Nicholas”
delete person.name;
alert(person.name); //“Nicholas”

把 configurable 設(shè)置為 false ,表示不能從對(duì)象中刪除屬性。如果對(duì)這個(gè)屬性調(diào)用 delete ,則在非嚴(yán)格模式下什么也不會(huì)發(fā)生,而在嚴(yán)格模式下會(huì)導(dǎo)致錯(cuò)誤。而且,一旦把屬性定義為不可配置的,就不能再把它變回可配置了。此時(shí),再調(diào)用 Object.defineProperty() 方法修改除 writable 之外的特性,都會(huì)導(dǎo)致錯(cuò)誤:

var person = {};
Object.defineProperty(person, “name”, {
    configurable: false,
    value: “Nicholas”
});
//拋出錯(cuò)誤
Object.defineProperty(person, “name”, {
    configurable: true,
    value: “Nicholas”
});

也就是說(shuō),可以多次調(diào)用Object.defineProperty() 方法修改同一個(gè)屬性,但在把configurable 特性設(shè)置為 false 之后就會(huì)有限制了。

在調(diào)用 Object.defineProperty() 方法時(shí),如果不指定, configurable 、 enumerable和 writable 特性的默認(rèn)值都是 false 。多數(shù)情況下,可能都沒(méi)有必要利用 Object.defineProperty() 方法提供的這些高級(jí)功能。不過(guò),理解這些概念對(duì)理解JavaScript對(duì)象卻非常有用。

IE8是第一個(gè)實(shí)現(xiàn) Object.defineProperty() 方法的瀏覽器版本。然而,這個(gè)版本的實(shí)現(xiàn)存在諸多限制:只能在DOM對(duì)象上使用這個(gè)方法,而且只能創(chuàng)建訪問(wèn)器屬性。由于實(shí)現(xiàn)不徹底,建議讀者不要在IE8中使用 Object.defineProperty() 方法。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/51314.html

相關(guān)文章

  • ECMAScript中有兩種屬性數(shù)據(jù)屬性訪問(wèn)屬性。

    摘要:數(shù)據(jù)屬性數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置。數(shù)據(jù)屬性有個(gè)描述其行為的特性。表示能否通過(guò)刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問(wèn)器屬性。其中,描述符對(duì)象的屬性必須是和。 ECMA-262定義這些特性是為了實(shí)現(xiàn)JavaScript引擎用的,因此在JavaScript中不能直接訪問(wèn)它們。為了表示特性是內(nèi)部值,該規(guī)范把它們放在了兩對(duì)兒方括號(hào)中,例如 [[Enumerab...

    GitCafe 評(píng)論0 收藏0
  • ECMAScript中有兩種屬性數(shù)據(jù)屬性訪問(wèn)屬性

    摘要:數(shù)據(jù)屬性數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置。數(shù)據(jù)屬性有個(gè)描述其行為的特性。表示能否通過(guò)刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問(wèn)器屬性。其中,描述符對(duì)象的屬性必須是和。 ECMA-262定義這些特性是為了實(shí)現(xiàn)JavaScript引擎用的,因此在JavaScript中不能直接訪問(wèn)它們。為了表示特性是內(nèi)部值,該規(guī)范把它們放在了兩對(duì)兒方括號(hào)中,例如 [[Enumerab...

    cpupro 評(píng)論0 收藏0
  • JS學(xué)習(xí)筆記(第6章)(面向?qū)ο蟮某绦蛟O(shè)計(jì)之理解對(duì)象)

    摘要:其中,描述符對(duì)象的屬性必須是和。吧設(shè)置為,表示不能從對(duì)象中刪除屬性。這個(gè)方法接收兩個(gè)對(duì)象參數(shù)要添加和修改其屬性值的對(duì)象,第二個(gè)是與第一個(gè)對(duì)象中要添加和修改的屬性值一一對(duì)應(yīng)。 理解對(duì)象 1、創(chuàng)建自定義對(duì)象的兩種方法: (1)創(chuàng)建一個(gè)Object實(shí)例,然后再為它添加屬性和方法。 var person = new Object(); person.name = Nicholas; ...

    FingerLiu 評(píng)論0 收藏0
  • 對(duì)象屬性

    摘要:作用修改屬性默認(rèn)的特性參數(shù)屬性所在的對(duì)象屬性的名字和一個(gè)描述符對(duì)象。描述符對(duì)象的屬性必須是和。這個(gè)方法接收兩個(gè)參數(shù)屬性所在的對(duì)象和要讀取器描述符的屬性名稱。 屬性的類型 ECMA-262 第 5 版在定義只有內(nèi)部才用的特性(attribute)時(shí),描述了屬性(property)的各種特征。定義這些屬性是為了實(shí)現(xiàn)JavaScript引擎用的,因此在JavaScript中不能直接訪問(wèn)它們。...

    ispring 評(píng)論0 收藏0
  • JS數(shù)據(jù)類型

    摘要:它并沒(méi)有為整數(shù)給出一種特定的類型。例如,使用一個(gè)分隔符,一個(gè)可以模仿一個(gè)列表一個(gè)的數(shù)組可能更適合一些。不幸的是,當(dāng)一個(gè)分隔符在用于列表中的元素時(shí),打亂了這個(gè)列表。 JS常用數(shù)據(jù)類型 編程語(yǔ)言都具有內(nèi)建的數(shù)據(jù)結(jié)構(gòu),但各種編程語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)常有不同之處。本文試圖列出 JavaScript 語(yǔ)言中內(nèi)建的數(shù)據(jù)結(jié)構(gòu)及其屬性,它們可以用來(lái)構(gòu)建其他的數(shù)據(jù)結(jié)構(gòu);同時(shí)盡可能的描述與其他語(yǔ)言的不同之處。 ...

    ingood 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<