摘要:不管函數(shù)還是數(shù)據(jù),都可以稱為某某對(duì)象的屬性。一些細(xì)節(jié)輸出結(jié)果如下可以看出,函數(shù)是有的數(shù)據(jù)屬性是創(chuàng)建對(duì)象時(shí)定義的,所有屬性特性都是是用定義的,默認(rèn)為數(shù)據(jù)屬性,所有屬性特性默認(rèn)為。訪問器屬性暫時(shí)想到的,就是通過改變?cè)搶傩愿淖儍?nèi)部多個(gè)屬性。
都知道js是面向?qū)ο蟮?,?chuàng)建了對(duì)象后,對(duì)象中保存的就是一組組名值對(duì),值可以是數(shù)據(jù)類型或函數(shù)。不管函數(shù)還是數(shù)據(jù),都可以稱為某某對(duì)象的屬性。再細(xì)分,屬性可以有兩個(gè)類型:數(shù)據(jù)屬性或訪問器屬性。
因此,數(shù)據(jù)屬性不要誤解為是數(shù)據(jù)的屬性類型,函數(shù)的屬性類型也是數(shù)據(jù)屬性的。
var obj = {say:function(){return this.name;},age:11}; console.log(Object.getOwnPropertyDescriptors(obj)); //輸出{value: ?, writable: true, enumerable: true, configurable: true}
數(shù)據(jù)屬性(4個(gè)):
value: 大家熟知的一樣,保存的是數(shù)據(jù)值,如果是函數(shù),保留的就是整個(gè)函數(shù)。
writable: 是否可修改,設(shè)置為false可以巧妙定義出"私有變量"。true表示可修改,false則相反。
enumerable: 該屬性是否可被枚舉出。true表示可枚舉,false則相反。
configurable: delete屬性有沒有用,能否修改value和enumerable屬性,能否把屬性改為訪問器屬性。true就是都可以,false就是都不可以。
訪問器屬性(4個(gè)):
configurable:同上
enumerable: 同上
get:一個(gè)用于訪問其他屬性值的函數(shù)
set:一個(gè)用于修改其他屬性值的函數(shù)
對(duì)于這些屬性類型,可以修改,用defineProperty()或defineProperties();可以讀取,用getOwnPropertyDescriptor()或getOwnPropertyDescriptors()。當(dāng)然,訪問器屬性只能用defineProperty()或defineProperties()創(chuàng)建。
一些細(xì)節(jié):
var obj = {say:function(){return this.name;},age:11}; Object.defineProperty(obj,"name",{}); console.log(Object.getOwnPropertyDescriptors(obj)); //輸出結(jié)果如下: //age:{value: 11, writable: true, enumerable: true, configurable: true} //name:{value: undefined, writable: false, enumerable: false, configurable: false} //say:{value: ?, writable: true, enumerable: true, configurable: true}
可以看出,函數(shù)say是有value的數(shù)據(jù)屬性;age是創(chuàng)建對(duì)象時(shí)定義的,所有屬性特性都是true;name是用defineProperty()定義的,默認(rèn)為數(shù)據(jù)屬性,所有屬性特性默認(rèn)為false。
var obj = {age:11}; Object.defineProperty(obj,"age",{ configurable:false }); Object.defineProperty(obj,"age",{ writable:false, // enumerable:false, 會(huì)報(bào)錯(cuò) // configurable:true, 會(huì)報(bào)錯(cuò) value:12 }); Object.defineProperty(obj,"name",{ configurable:false, //如果不指定,默認(rèn)也都是false value:2 }); Object.defineProperty(obj,"name",{ // writable:false, 會(huì)報(bào)錯(cuò) // enumerable:false, 會(huì)報(bào)錯(cuò) // configurable:true, 會(huì)報(bào)錯(cuò) // value:12 會(huì)報(bào)錯(cuò) });
創(chuàng)建時(shí)定義的屬性:修改了configurable后,其實(shí)還是可以修改writable和value屬性的。
defineProperty()定義的屬性:configurable一旦是false,以后就不可能在更改任何屬性。
訪問器屬性暫時(shí)想到的,就是通過改變?cè)搶傩愿淖儍?nèi)部多個(gè)屬性。而且,如果某屬性writable是false,訪問器屬性改變?cè)搶傩詴?huì)無效。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93131.html
摘要:寫在前面金三銀四又到了一年一度的跳槽季相信大家都在準(zhǔn)備自己面試筆記我也針對(duì)自己工作中所掌握或了解的一些東西做了一個(gè)目錄總結(jié)方便自己復(fù)習(xí)詳細(xì)內(nèi)容會(huì)在之后一一對(duì)應(yīng)地補(bǔ)充上去有些在我的個(gè)人主頁筆記中也有相關(guān)記錄這里暫且放一個(gè)我的面試知識(shí)點(diǎn)目錄大家 寫在前面: 金三銀四, 又到了一年一度的跳槽季, 相信大家都在準(zhǔn)備自己面試筆記, 我也針對(duì)自己工作中所掌握或了解的一些東西做了一個(gè)目錄總結(jié),方便自...
摘要:寫在前面金三銀四又到了一年一度的跳槽季相信大家都在準(zhǔn)備自己面試筆記我也針對(duì)自己工作中所掌握或了解的一些東西做了一個(gè)目錄總結(jié)方便自己復(fù)習(xí)詳細(xì)內(nèi)容會(huì)在之后一一對(duì)應(yīng)地補(bǔ)充上去有些在我的個(gè)人主頁筆記中也有相關(guān)記錄這里暫且放一個(gè)我的面試知識(shí)點(diǎn)目錄大家 寫在前面: 金三銀四, 又到了一年一度的跳槽季, 相信大家都在準(zhǔn)備自己面試筆記, 我也針對(duì)自己工作中所掌握或了解的一些東西做了一個(gè)目錄總結(jié),方便自...
摘要:在標(biāo)簽中添加屬性,本質(zhì)上是跟在標(biāo)簽里面寫屬性時(shí)一樣的,所以屬性值最終都會(huì)編譯為字符串類型。這個(gè)節(jié)點(diǎn)包括很多,比如,以及一些方法等方法。一個(gè)對(duì)象有很多,該集合名字為,里面有其他以及,里面有很多。 一、變量類型和計(jì)算 JS中使用typeof能得到哪些類型 變量類型 值類型:變量本身就是含有賦予給它的數(shù)值的,它的變量本身及保存的數(shù)據(jù)都存儲(chǔ)在棧的內(nèi)存塊當(dāng)中 引用類型:引用類型當(dāng)然是分配到...
摘要:每一個(gè)函數(shù)都有一個(gè)屬性,而這個(gè)屬性也是一個(gè)對(duì)象,就叫做原型對(duì)象,對(duì)象里有一個(gè)屬性指向了函數(shù)。所以給原型添加一個(gè)屬性,對(duì)象也會(huì)有這個(gè)屬性。 js要掌握的東西。原型 閉包聲明提升基本數(shù)據(jù)類型高階函數(shù)JSONJSONP 跨域 iframe 通信Ajax原生DOM操作(比如 逆序DOM節(jié)點(diǎn))事件捕捉,捕獲,冒泡,代理Array常用函數(shù)String常用函數(shù)ES5 + ES6VUE框架部分(大部分...
摘要:,看了這樣的解釋,或許讓你更摸不著頭腦了。彈出彈出在這個(gè)例子中,只要會(huì)使用瀏覽器的朋友,都能看得出來完全繼承了的屬性和方法,否則是無法解釋的,因?yàn)樵谥胁]有定義屬性和,那么按常理推斷在的實(shí)例對(duì)象中,并不會(huì)出現(xiàn)這兩個(gè)屬性。 快速刪除尾部數(shù)組 var arr=[1,2,3,4,5]; arr.length=3; console.log(arr)//[1,2,3] 直接改變數(shù)組的length...
閱讀 991·2021-10-25 09:48
閱讀 691·2021-08-23 09:45
閱讀 2550·2019-08-30 15:53
閱讀 1805·2019-08-30 12:45
閱讀 732·2019-08-29 17:21
閱讀 3546·2019-08-27 10:56
閱讀 2605·2019-08-26 13:48
閱讀 753·2019-08-26 12:24