亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Object.defineproperty 如何作用到類上或者說構造函數上

Object.defineproperty 如何作用到類上或者說構造函數上

拉莫斯之舞 2019-03-23 11:46:40
Object.defineproperty 如何作用到類上或者說構造函數上 。試了下好像只能作用的對象實例上function Person(name,age) {       this._name=name       this._age=age    }     Person.prototype.say=function(){        console.log(this._name)     }    let huixu = new Person('huixu',18)    let lili = new Person('lili',25)         Object.defineProperty(huixu,"_name",{value:'xxx'})//作用在對象實例上是有效的     //Object.defineProperty(Person,"_name",{value:'xxx'}) 無效          huixu.say()//huixu     lili.say()//lili
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

Object.defineProperty() 方法會直接在一個對象上定義一個新屬性
function Person(name,age) {       this._name=name       this._age=age
   }Object.defineProperty(Person,"_name",{value:'xxx'})
Person._name;   // xxx

這么定義屬性是有效的,不管是上面說的構造函數,還是對象。但并不是定義在原型上,所以對應的實例對象無法繼承。

如果直接在Person.prototype 原型上定義屬性,就可以看到效果。

    Object.defineProperty(Person.prototype,"_name",{value:'xxx'})
    Person._name;   // undefined
    
    var obj = new Person('other',18)
    obj.say()   //xxx
    obj._name; // 'xxx'


查看完整回答
反對 回復 2019-03-23
  • 2 回答
  • 0 關注
  • 529 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號