Object.defineProperty 筆記

var a= {} Object.defineProperty(a,"b",{ value:123 }) console.log(a.b);//123
Object.defineProperty有三個參數

一個參數:目標對象編碼

第二個參數:須要定義的屬性或方法的名字。spa

第三個參數:目標屬性所擁有的特性。(descriptor)code

descriptor

他又如下取值,對象

value:屬性的值ip

writable:若是爲false,屬性的值就不能被重寫,只能爲只讀了get

configurable:總開關,一旦爲false,就不能再設置他的(value,writable,configurable)string

enumerable:是否能在for...in循環中遍歷出來或在Object.keys中列舉出來。it

get:獲取值io

set:設置值console

當咱們只設置了 value,別的並無設置,可是 第一次的時候能夠簡單的理解爲(暫時這樣理解)它會默認幫咱們把writable,configurable,enumerable。都設上值,並且值還都是false,下面你再想設置,就會報錯

想用(get 和 set),就不能用(wriable 或 value中的任何一個)
var a= {} Object.defineProperty(a,"b",{ set:function(newValue){ console.log("你要賦值給我,個人新值是"+newValue) }, get:function(){ console.log("你取個人值") return 2 //注意這裏,我硬編碼返回2 } }) a.b =1 //打印 你要賦值給我,個人新值是1 console.log(a.b) //打印 你取個人值 //打印 2 注意這裏,和個人硬編碼相同的
相關文章
相關標籤/搜索