成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript對(duì)象屬性的特性

Betta / 475人閱讀

摘要:存取器屬性的個(gè)特性是讀取寫(xiě)入可枚舉性和可配置性。描述符對(duì)象的屬性和他們所描述符的屬性特性是同名的。通過(guò)調(diào)用可以獲得某個(gè)對(duì)象特定屬性的描述符只能得到自有屬性的描述符。對(duì)于新創(chuàng)建的屬性來(lái)說(shuō),默認(rèn)的特性值是或。

除了包含名字和值之外,屬性還包含的一些標(biāo)識(shí)它們可寫(xiě)、可枚舉和可配置的特性。數(shù)據(jù)屬性的4個(gè)特性分別是它的值(value)、可寫(xiě)性(writable)、可枚舉性(enumerable)和可配置性(configurable)。存取器屬性的4個(gè)特性是讀取(get)、寫(xiě)入(set)、可枚舉性和可配置性。

可寫(xiě)性決定屬性的值是否可以被改變

可配置性決定了是否可以修改屬性描述對(duì)象

ECMAScript中有一個(gè)名為“屬性描述符”(property descriptor)的對(duì)象,這個(gè)對(duì)象代表那4個(gè)特性。描述符對(duì)象的屬性和他們所描述符的屬性特性是同名的。因此數(shù)據(jù)屬性的描述符對(duì)象有value、writable、enumerable和configurable。存取器屬性的描述符對(duì)象則用get屬性和set屬性代替value和writable。其中writable、enumerable和configurable是布爾值,get屬性和set屬性是函數(shù)值。

Object.getOwnPropertyDescriptor()

通過(guò)調(diào)用Object.getOwnPropertyDescriptor()可以獲得某個(gè)對(duì)象特定屬性的描述符:

Object.getOwnPropertyDescriptor({x:1},"x");
//{value:1,writable:true,enumerable:true,configurable:true}

Object.getOwnPropertyDescriptor()只能得到自有屬性的描述符。

Object.defineProperty()與Object.defineProperties()

要想設(shè)置屬性的特性,或者想讓新建屬性具有某種特性,則需要調(diào)用Object.defineProperty(),傳入要修改的對(duì)象,要?jiǎng)?chuàng)建或要修改的屬性,以及屬性描述符對(duì)象。

var o = {};
// 添加一個(gè)不可枚舉的數(shù)據(jù)屬性x,并賦值為1
Object.defineProperty(o, "x", { value:1,
                                writable: true,
                                enumerable:false,
                                configurable: true});

傳入Object.defineProperty()的屬性描述符對(duì)象不必包含4個(gè)特性。對(duì)于新創(chuàng)建的屬性來(lái)說(shuō),默認(rèn)的特性值是false或undefined。對(duì)于修改的已有屬性來(lái)說(shuō),默認(rèn)的特性值沒(méi)有做任何修改。這個(gè)方法要么修改已有屬性要么新建自有屬性,但不能修改繼承屬性。
如果要同時(shí)修改或創(chuàng)建多個(gè)屬性,則需要使用Object.defineProperties()。第一個(gè)參數(shù)是要修改的對(duì)象,第二個(gè)參數(shù)是一個(gè)映射表,它包含要新建或修改的屬性的名稱,以及它們的屬性描述符,例如:

var p = Object.defineProperties(
    x: { value:1, writable: true, enumerable:false, configurable: true},
    y:{ value:1, writable: true, enumerable:false, configurable: true},
    r: { 
        get: function() {
            return Math.sqrtthis.x*this.x + this.y*this.y)
        },
        enumerable:false,
        configurable: true
    }
});

用Object.defineProperty()與Object.defineProperties()操作對(duì)象屬性的特性也是要遵循一定的規(guī)則的。任何違反規(guī)則的使用會(huì)拋出類型錯(cuò)誤異常。下面是完整的規(guī)則:

如果對(duì)象是不可擴(kuò)展的,則可以編輯已有的自有屬性,但不能給它添加新屬性。

如果屬性是不可配置的,則不能修改它的可配置性和可枚舉性。

如果存取器屬性是不可配置的,則不能修改其getter和setter方法,也不能將它轉(zhuǎn)換為數(shù)據(jù)屬性。

如果數(shù)據(jù)屬性是不可配置的,則不能將它轉(zhuǎn)換成存取器屬性。

如果數(shù)據(jù)屬性是不可配置且不可寫(xiě)的,則不能修改它的值。然而可配置但不可寫(xiě)屬性的值是可以修改的(實(shí)際上是先將它標(biāo)記為可寫(xiě)的,然后修改它的值,最后轉(zhuǎn)換為不可寫(xiě)的)。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89265.html

相關(guān)文章

  • 深入理解JavaScript屬性特性

    摘要:深入理解中的屬性和特性中屬性和特性是完全不同的兩個(gè)概念,這里我將根據(jù)自己所學(xué),來(lái)深入理解中的屬性和特性。其中第三個(gè)參數(shù)描述符對(duì)象是對(duì)象字面量的方法創(chuàng)建的,里面的屬性和屬性值實(shí)際上保存的是要修改的特性和特性值。 深入理解JavaScript中的屬性和特性   JavaScript中屬性和特性是完全不同的兩個(gè)概念,這里我將根據(jù)自己所學(xué),來(lái)深入理解JavaScript中的屬性和特性。   主...

    VPointer 評(píng)論0 收藏0
  • ES5特性 - ECMAScript特性 - Javascript核心

    摘要:特性本文將簡(jiǎn)單列舉的核心特性。獲取自有屬性名列表。以給丁對(duì)象為創(chuàng)建新的對(duì)象并返回。將對(duì)象的每個(gè)自有自有屬性做如下操作屬性的特性置為屬性的特性置為同時(shí),該對(duì)象將不可擴(kuò)展。檢查對(duì)象是否是位于給定對(duì)象的原型鏈上。 原文: http://pij.robinqu.me/JavaScript_Core/ECMAScript/es5.html 源代碼: https://github....

    Half 評(píng)論0 收藏0
  • Javascript面向對(duì)象程序設(shè)計(jì)_理解對(duì)象

    摘要:面向?qū)ο蟮某绦蛟O(shè)計(jì)理解對(duì)象前言最近在細(xì)讀高級(jí)程序設(shè)計(jì),對(duì)于我而言,中文版,書(shū)中很多地方翻譯的差強(qiáng)人意,所以用自己所理解的,嘗試解讀下??偨Y(jié)如果英語(yǔ)水平足夠好的話,建議看英文原版書(shū)籍或者國(guó)外大師的博客。 JS面向?qū)ο蟮某绦蛟O(shè)計(jì)_理解對(duì)象 前言:最近在細(xì)讀Javascript高級(jí)程序設(shè)計(jì),對(duì)于我而言,中文版,書(shū)中很多地方翻譯的差強(qiáng)人意,所以用自己所理解的,嘗試解讀下。 如有紕漏或錯(cuò)誤,會(huì)非...

    劉厚水 評(píng)論0 收藏0
  • javascript 面向對(duì)象版塊之對(duì)象屬性

    摘要:上一篇面向?qū)ο蟀鎵K之理解對(duì)象下一篇面向?qū)ο蟀鎵K之定義多個(gè)對(duì)象屬性以及讀取屬性特性 這是 javascript 面向?qū)ο蟀鎵K的第二篇文章,主要講解的是對(duì)象的屬性,首先創(chuàng)建一個(gè)對(duì)象: var person = { name: Nicholas, age: 29, job: Software Engineer, sayName: function () { conso...

    lolomaco 評(píng)論0 收藏0
  • javascript 面向對(duì)象版塊之定義多個(gè)對(duì)象屬性以及讀取屬性特性

    摘要:返回值是一個(gè)對(duì)象,如果是訪問(wèn)器屬性,這個(gè)對(duì)象的屬性有和如果是數(shù)據(jù)屬性,這個(gè)對(duì)象的屬性有和。上一篇面向?qū)ο蟀鎵K之對(duì)象屬性下一篇面向?qū)ο蟀鎵K之創(chuàng)建對(duì)象 這是 javascript 面向?qū)ο蟀鎵K的第三篇文章,主要講解的是多個(gè)屬性的定義以及讀取屬性的特性。前面這幾章內(nèi)容目的在于加深對(duì)對(duì)象的理解,這樣可以利于理解后面的原型鏈以及繼承方面的知識(shí),或者你也可以了解一下不一樣的 javascript ...

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

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

0條評(píng)論

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