亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript?對(duì)象新增方法defineProperty與keys的使用說(shuō)明

 更新時(shí)間:2022年09月06日 15:42:39   作者:卡卡西最近怎么樣  
這篇文章主要介紹了JavaScript對(duì)象新增方法defineProperty與keys的使用說(shuō)明,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下

文章導(dǎo)讀:

這篇文章給大家講解在 ES5 中對(duì)象新增的兩個(gè)常用方法:defineProperty(),keys(),

這兩個(gè)方法可以讓我們更方便的操作對(duì)象,獲取對(duì)象屬性,賦值修改等等操作,最重要的是,這些方法可以讓我們?cè)O(shè)置無(wú)法修改對(duì)象屬性值,下面跟我一起了解一下吧!

一:Object.defineProperty() 

   Object.defineProperty() 可以用來(lái)定義對(duì)象的新屬性和修改屬性值,設(shè)置屬性值是否可修改(重點(diǎn))等等,該方法共有三個(gè)參數(shù)

1.1 參數(shù)說(shuō)明

Object.defineProperty( obj, prop, descriptor )
參數(shù)objpropdescriptor
含義要操作的對(duì)象名稱(chēng)對(duì)象中要操作的某個(gè)屬性的名稱(chēng)這個(gè)參數(shù)有四個(gè)特性,該參數(shù)以對(duì)象形式書(shū)寫(xiě),詳細(xì)寫(xiě)法說(shuō)明如下

1.2 第三個(gè)參數(shù) descriptor 的說(shuō)明

其參數(shù)以對(duì)象形式書(shū)寫(xiě),其內(nèi)部有四個(gè)特性,例如修改值的操作,設(shè)置是否可重寫(xiě),設(shè)置是否可枚舉,是否可修改特性等等......

1.3 實(shí)際使用

1.3.1 writable 特性

writeable 特性可以設(shè)置一個(gè)屬性是否可被重寫(xiě),true 為可重寫(xiě),false 為不可重寫(xiě),使用 defineProperty 新添加的屬性默認(rèn)為 false

    <script>
       var dog={
          'name':'旺財(cái)',
          'age':5
       }
       Object.defineProperty(dog,'sex',{
          value:'公',
          writable:false
       })
       dog.sex='母'    //更改屬性值看其是否改變
       console.log(dog);
    </script>

可以看到我們雖然更改了 sex 的值,但是打印結(jié)果沒(méi)有被更改 ,說(shuō)明 writable : false 屬性成功使其屬性值不能重寫(xiě),功能十分強(qiáng)大是不是!

注意事項(xiàng):如果是使用 defineProperty 新添加的屬性,那么 writable 默認(rèn)為 false 不可修改,如果是本身就有的屬性而去修改值,那其仍可以修改

1.3.2 enumerable 特性

enumerable 特性可以設(shè)置某個(gè)屬性是否可被枚舉,true 為可枚舉,false 為不可枚舉,使用 defineProperty 新添加的屬性默認(rèn)為 false

    <script>
        var dog={
            'name':'旺財(cái)',
            'age':5
        }
        Object.defineProperty(dog,'sex',{
            value:'公',
            enumerable:false
        })
        console.log(Object.keys(dog));
    </script>

可以看到我們遍歷得不到設(shè)置過(guò) enumerable:false 特性的屬性 sex,證明了 false 不可枚舉

注意事項(xiàng):如果是使用 defineProperty 新添加的屬性,那么 enumerable 默認(rèn)為 false 不可枚舉,如果是本身就有的屬性而去修改值,那其仍可以枚舉

1.3.3 configurable 特性

 configurable 特性可以設(shè)置某個(gè)屬性是否可被修改(刪除),true 為可修改,false 為不可修改,使用 defineProperty 新添加的屬性默認(rèn)為 false

configurable 特性的參數(shù)只能設(shè)置一次,第二次設(shè)置會(huì)無(wú)效?。?/p>

    <script>
        var dog={
            'name':'旺財(cái)',
            'age':5,
        }
        Object.defineProperty(dog,'sex',{
            value:'公',
            configurable : false
        })
        delete dog.sex
        console.log(dog);
    </script>

可以看到我們刪除不了設(shè)置過(guò) configurable:false 特性的屬性 sex,證明了 false 不可修改

注意事項(xiàng):如果是使用 defineProperty 新添加的屬性,那么 configurable 默認(rèn)為 false 不可修改,如果是本身就有的屬性而去修改值,那其仍可以修改

二:Object.keys()

keys() 可以用來(lái)獲取對(duì)象的屬性名,參數(shù)為要操作的對(duì)象名稱(chēng)。其返回一個(gè)數(shù)組元素為屬性名的新數(shù)組(故需要定義一個(gè)數(shù)組去接收)

Object.keys( obj )

    <script>
        var dog={
            'name':'旺財(cái)',
            'age':5,
            'sex':'公'
        }
        var arr=Object.keys(dog)
        console.log(arr);
    </script>

成功返回了對(duì)象的屬性名稱(chēng) 

到此這篇關(guān)于JavaScript 對(duì)象新增方法 defineProperty 與 keys 的使用說(shuō)明的文章就介紹到這了,更多相關(guān)JS defineProperty與keys 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論