从ObjectConstructor.defineProperty我看到这个函数的第一个参数是(o:any),它表示任何对象。
所以我尝试为构造函数和实例定义一个属性,如下所示:
function h(){this.a='abc';}
h()
console.log(exports.a);
Object.defineProperty(h,'b');//TypeError
var hinst=new h();
Object.defineProperty(hinst,'b');//TypeError
Object.def
实际上,两个Object.defineProperty语句都会抛出运行时异常,说
TypeError:属性描述必须是对象:undefined。 为什么会发生此错误,任何指示或任何关于如何使用Object.defineProperty的因素限制?
答案 0 :(得分:2)
Object.defineProperty()方法直接定义一个新属性 对象,或修改对象上的现有属性,然后返回 物体。 More info here
正确的语法是:
Object.defineProperty(obj, prop, descriptor)
您的脚本会错过代码中的descriptor
示例:
Object.defineProperty(h,'b');
下面是如何使用的示例:
function h() {
this.a = 'abc';
}
Object.defineProperty(h, 'b',{
value: 37,
writable: true,
enumerable: true,
configurable: true
});
var hinst = new h();
Object.defineProperty(hinst, 'b',{
value: 37,
writable: true,
enumerable: true,
configurable: true
});
console.log(hinst);