成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

對(duì)象屬性

ispring / 3270人閱讀

摘要:作用修改屬性默認(rèn)的特性參數(shù)屬性所在的對(duì)象屬性的名字和一個(gè)描述符對(duì)象。描述符對(duì)象的屬性必須是和。這個(gè)方法接收兩個(gè)參數(shù)屬性所在的對(duì)象和要讀取器描述符的屬性名稱(chēng)。

屬性的類(lèi)型

ECMA-262 第 5 版在定義只有內(nèi)部才用的特性(attribute)時(shí),描述了屬性(property)的各種特征。定義這些屬性是為了實(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。

Object.defineProperty()

作用:修改屬性默認(rèn)的特性
參數(shù):屬性所在的對(duì)象、屬性的名字、和一個(gè)描述符對(duì)象。描述符對(duì)象的屬性必須是configurable、enumerable、writable 和 value。

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

一旦把configurable屬性定義為不可配置的,就不能再把它變回可配置了。此時(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" 
});

在調(diào)用 Object.defineProperty()方法時(shí),如果不指定,configurable、enumerable 和writable 特性的默認(rèn)值都是 false(未調(diào)用改方法時(shí)默認(rèn)值都為true)

2. 訪問(wèn)器屬性

訪問(wèn)器屬性不含數(shù)據(jù)值;他們包含一對(duì)兒getter和setter函數(shù)(不是必需的)。在讀取訪問(wèn)器屬性時(shí),會(huì)調(diào)用getter函數(shù),這個(gè)函數(shù)負(fù)責(zé)返回有效的值;在寫(xiě)入訪問(wèn)器屬性時(shí),會(huì)調(diào)用setter函數(shù)并傳入新值。這個(gè)函數(shù)負(fù)責(zé)如何處理數(shù)據(jù)

訪問(wèn)器的四個(gè)屬性:

[[Configurable]]:表示能否通過(guò) delete 刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為數(shù)據(jù)屬性。對(duì)于直接在對(duì)象上定義的屬性,這個(gè)特性的默認(rèn)值為true。

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

[[Get]]:在讀取屬性時(shí)調(diào)用的函數(shù)。默認(rèn)值為 undefined。

[[Set]]:在寫(xiě)入屬性時(shí)調(diào)用的函數(shù)。默認(rèn)值為 undefined。

訪問(wèn)器屬性不能直接定義,必須使用 Object.defineProperty()來(lái)定義。

var book = { 
     _year: 2004,     //下劃線是一種常用的記號(hào),用于表示只能通過(guò)對(duì)象方法訪問(wèn)的屬性
     edition: 1 
}; 
Object.defineProperty(book, "year", { 
     get: function(){ 
         return this._year; 
     }, 
    set: function(newValue){ 
        if (newValue > 2004) { 
            this._year = newValue; 
            this.edition += newValue - 2004; 
        } 
    } 
}); 
book.year = 2005; 
alert(book.edition); //2

支持 ECMAScript 5 的這個(gè)方法的瀏覽器有 IE9+(IE8 只是部分實(shí)現(xiàn))、Firefox 4+、Safari 5+、Opera 12+ 和 Chrome 。在這個(gè)方法之前,要?jiǎng)?chuàng)建訪問(wèn)器屬性,一般都使用兩個(gè)非標(biāo)準(zhǔn)的方法:__defineGetter__()和__defineSetter__()。這兩個(gè)方法最初是由 Firefox 引入的,后來(lái) Safari 3、Chrome 1 和 Opera 9.5 也給出了相同的實(shí)現(xiàn)

var book = { 
     _year: 2004, 
     edition: 1 
}; 
//定義訪問(wèn)器的舊有方法
book.__defineGetter__("year", function(){ 
     return this._year; 
}); 
book.__defineSetter__("year", function(newValue){ 
 if (newValue > 2004) { 
     this._year = newValue; 
     this.edition += newValue - 2004; 
 } 
}); 
book.year = 2005; 
alert(book.edition); //2 
AccessorPropertiesExample02.htm 
在不支持 Object.defineProperty() 方法的瀏覽器中不能修改 [[Configurable]] 和 [[Enumerable]]。  
  
2 定義多個(gè)屬性

Object.defineProperties()方法,利用這個(gè)方法可以通過(guò)描述符一次定義多個(gè)屬性。這個(gè)方法接收兩個(gè)對(duì)象參數(shù):第一個(gè)對(duì)象是要添加和修改器屬性的對(duì)象,第二個(gè)對(duì)象的屬性和第一個(gè)對(duì)象中要添加或修改的屬性一一對(duì)象。

var book = {}; 
Object.defineProperties(book, { 
    _year: { 
        value: 2004 
    }, 
    edition: { 
        value: 1 
    }, 
    year: { 
        get: function(){

             return this._year; 
        }, 
        set: function(newValue){ 
            if (newValue > 2004) { 
                this._year = newValue; 
                this.edition += newValue - 2004; 
            } 
        } 
    } 
});
3 讀取屬性的特性

Object.getOwnPropertyDescriptor()方法,可以取得給定屬性的描述符。這個(gè)方法接收兩個(gè)參數(shù): 屬性所在的對(duì)象和要讀取器描述符的屬性名稱(chēng)。返回值是一個(gè)對(duì)象,如果是訪問(wèn)器屬性,這個(gè)對(duì)象的屬性有configurable、enumerable、get 和 set;如果是數(shù)據(jù)屬性,這個(gè)對(duì)象的屬性有 configurable、enumerable、writable 和 value。

var book = {}; 
Object.defineProperties(book, { 
     _year: { 
         value: 2004 
     }, 
     edition: { 
         value: 1 
     }, 
     year: { 
         get: function(){ 
             return this._year; 
         }, 
         set: function(newValue){ 
             if (newValue > 2004) { 
                 this._year = newValue; 
                 this.edition += newValue - 2004; 
             } 
         } 
     } 
}); 
var descriptor = Object.getOwnPropertyDescriptor(book, "_year"); 
alert(descriptor.value); //2004 
alert(descriptor.configurable); //false

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

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

相關(guān)文章

  • 犀牛書(shū)——CHAP6:對(duì)象

    摘要:對(duì)象是屬性的無(wú)序集合。使用對(duì)象直接量創(chuàng)建的對(duì)象的原型就是,使用運(yùn)算符創(chuàng)建的對(duì)象的原型是構(gòu)造函數(shù)的的值。主要目的是將對(duì)象鎖定,避免外界干擾。判斷對(duì)象是否封閉。刪除屬性可刪除對(duì)象的自有屬性且為的屬性。 對(duì)象是屬性的無(wú)序集合。因此,這一章主要從對(duì)象和屬性兩個(gè)方面來(lái)闡述。showImg(https://box.worktile.com/view/c8f5f376fe314aeca69d9b4c...

    philadelphia 評(píng)論0 收藏0
  • 關(guān)于JavaScript對(duì)象,你所不知道的事(二)- 再說(shuō)屬性

    摘要:但好在還給我們提供了一個(gè)方法,每一個(gè)對(duì)象都有這樣一個(gè)方法,專(zhuān)門(mén)用來(lái)判斷某個(gè)屬性是否是該對(duì)象的私有屬性。如果你想要用對(duì)象字面形式,你只能在創(chuàng)建對(duì)象時(shí)定義訪問(wèn)器屬性。在中,我們使用凍結(jié)一個(gè)對(duì)象,并且使用來(lái)判斷一個(gè)對(duì)象是否被凍結(jié)。 說(shuō)完了對(duì)象那些不常用的冷知識(shí),是時(shí)候來(lái)看看JavaScript中對(duì)象屬性有哪些有意思的東西了。 不出你所料,對(duì)象屬性自然也有其相應(yīng)的特征屬性,但是這個(gè)話題有點(diǎn)復(fù)雜...

    Richard_Gao 評(píng)論0 收藏0
  • JavaScript || 對(duì)象

    摘要:通過(guò)對(duì)返回字符串切片第位到倒數(shù)第位即可獲得對(duì)象的類(lèi)型。測(cè)試對(duì)象是的深拷貝是的子集,不能表示中所有值。序列化結(jié)果是,對(duì)象序列化結(jié)果是日期字符串不能表示函數(shù)對(duì)象和只能序列化對(duì)象自有的可枚舉屬性。 對(duì)象 對(duì)象是JavaScript的基本數(shù)據(jù)類(lèi)型:屬性的無(wú)序集合。每個(gè)屬性key: value和屬性描述符descripter組成。 屬性名key:字符串或合法的變量標(biāo)識(shí)符; 屬性值value:...

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

    摘要:盡管的右操作數(shù)是構(gòu)造函數(shù),但計(jì)算過(guò)程實(shí)際是檢測(cè)了對(duì)象的繼承關(guān)系。通過(guò)創(chuàng)建的對(duì)象使用構(gòu)造函數(shù)的屬性作為它們的原型。 JavaScript之對(duì)象屬性 Object.create()繼承 ECMAScript 5定義了一個(gè)名為Object.create()的方法,它創(chuàng)建一個(gè)新對(duì)象, 其中第一個(gè)參數(shù)是這個(gè)對(duì)象的原型。Object.create()提供第二個(gè)可選參數(shù),用以對(duì)對(duì)象的屬性進(jìn)行進(jìn)一步描...

    gekylin 評(píng)論0 收藏0
  • 《JavaScript 闖關(guān)記》之對(duì)象

    摘要:屬性名可以是包含空字符串在內(nèi)的任意字符串,但對(duì)象中不能存在兩個(gè)同名的屬性。客戶端中表示網(wǎng)頁(yè)結(jié)構(gòu)的對(duì)象均是宿主對(duì)象。這里的函數(shù)稱(chēng)做構(gòu)造函數(shù),構(gòu)造函數(shù)用以初始化一個(gè)新創(chuàng)建的對(duì)象。通過(guò)關(guān)鍵字和構(gòu)造函數(shù)調(diào)用創(chuàng)建的對(duì)象的原型就是構(gòu)造函數(shù)的屬性的值。 對(duì)象是 JavaScript 的數(shù)據(jù)類(lèi)型。它將很多值(原始值或者其他對(duì)象)聚合在一起,可通過(guò)名字訪問(wèn)這些值,因此我們可以把它看成是從字符串到值的映射...

    rozbo 評(píng)論0 收藏0
  • JavaScript-對(duì)象

    摘要:對(duì)象是什么在中,一個(gè)對(duì)象就像一個(gè)單獨(dú)擁有屬性和類(lèi)型的實(shí)體。一個(gè)杯子作為一個(gè)對(duì)象,杯子有顏色重量等屬性。同樣,對(duì)象也有屬性定義它的特征。方法是關(guān)聯(lián)到某個(gè)對(duì)象的函數(shù),或者說(shuō),一個(gè)方法是一個(gè)值為某個(gè)函數(shù)的對(duì)象屬性。 對(duì)象是什么 在JavaScript中,一個(gè)對(duì)象就像一個(gè)單獨(dú)擁有屬性和類(lèi)型的實(shí)體。一個(gè)杯子作為一個(gè)對(duì)象,杯子有顏色、重量等屬性。同樣,JavaScript對(duì)象也有屬性定義它的特征。...

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

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

0條評(píng)論

閱讀需要支付1元查看
<