您好,登錄后才能下訂單哦!
這篇“Vue中的Object.defineProperty怎么用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Vue中的Object.defineProperty怎么用”文章吧。
定義:Object.defineProperty() 方法會(huì)直接在一個(gè)對(duì)象上定義一個(gè)新屬性,或者修改一個(gè)對(duì)象的現(xiàn)有屬性,并返回此對(duì)象。
let person = { name:'張三', sex:'男', } Object.defineProperty(person,'age',{ value:18, enumerable:true,//控制屬性是否可以枚舉,默認(rèn)值是false,當(dāng)該屬性的值為 true 時(shí),該屬性才會(huì)出現(xiàn)在對(duì)象的枚舉屬性中。 writable:true,//控制屬性是否可以被修改,默認(rèn)值是false,當(dāng)該屬性的值為 true 時(shí),才能被賦值運(yùn)算符改變。 configurable:true,//控制屬性是否可以被刪除,默認(rèn)值是false,當(dāng)該屬性的值為 true 時(shí),該屬性能從對(duì)應(yīng)的對(duì)象上被刪除。 }) console.log(person);
let age_number = 18; let person = { name:'張三', sex:'男', } Object.defineProperty(person,'age',{ //value:18, //enumerable:true,//控制屬性是否可以枚舉,默認(rèn)值是false,當(dāng)該屬性的值為 true 時(shí),該屬性才會(huì)出現(xiàn)在對(duì)象的枚舉屬性中。 //writable:true,//控制屬性是否可以被修改,默認(rèn)值是false,當(dāng)該屬性的值為 true 時(shí),才能被賦值運(yùn)算符改變。 //configurable:true,//控制屬性是否可以被刪除,默認(rèn)值是false,當(dāng)該屬性的值為 true 時(shí),該屬性能從對(duì)應(yīng)的對(duì)象上被刪除。 get(){ console.log("讀取age屬性"); return age_number; }, set(value) { console.log("修改age的值"); age_number = value; } }) console.log(person);
1.用Object.defineProperty方法創(chuàng)建一個(gè)新屬性時(shí),如果不指定configurabel,enumberable,writable特性的默認(rèn)值都是false,修改已定義的屬性特性無(wú)限制。
2.Configurable性定義為不可配置就不能把它變回可配置,此時(shí)調(diào)用Object.defineProperty修改除writable之外的特性都會(huì)報(bào)錯(cuò)。
3.模擬訪問(wèn)和設(shè)置的行為:想要訪問(wèn)器屬性模擬默認(rèn)行為的話,必須的在里面新添一個(gè)屬性不然會(huì)造成循環(huán)引用
var obj={ a:1 }; Object.defineProperty(obj,"a",{ get:function(){ return this.a; }, set:function(val){ this.a=val } }); obj.a;// Maximum call stack size exceeded
會(huì)造成循環(huán)引用,狂call不止
person.a → get.call(person) → this.a → person.a → get.call(person) → this.a......
以上就是關(guān)于“Vue中的Object.defineProperty怎么用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。