我想立刻在我的对象的原型上设置多个属性,因为Object.defineProperties()接受一个对象(原型是一个对象)和描述符,而我的对象obj已经有一个原型,因为它随附每个对象,我试图修改我的对象的原型如下
var obj = document.createElement(tn);
obj.prototype = Object.defineProperties(obj.prototype,{
getName:{
value:function(){
alert("I have the tag"+this.tagName);
},
configurable:true
}
});
但是我收到了一个错误:
Object.defineProperties called on non-object
为什么?
答案 0 :(得分:3)
这是因为obj.prototype
未定义。
您将其指向其他对象,属性将添加到其中。
JS有一个基于原型的继承模型,其中一个对象继承自另一个对象,如果它没有属性或方法,它会查看它的原型对象,它只是另一个具有属性和方法的对象,它们可能再次拥有它自己的原型对象。
您收到错误Object.defineProperties called on non-object
只是因为obj.prototype
不是对象且未定义。
将其设置为窗口或空{}
,它应该适合您。