为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信