我想立刻在我的对象的原型上设置多个属性,因为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
为什么?
这是因为,obj.prototype
未定义。
您将其指向其他对象,将向其添加属性。
JS有一个基于原型的继承模型,其中一个对象继承自另一个对象,如果它没有属性或方法,它会查看它的原型对象,它只是另一个具有属性和方法的对象,它们可能还有自己的原型对象。
你得到错误Object.defineProperties called on non-object
只是因为obj.prototype
不是一个对象而且是未定义的。
把它设置为窗口或空{}
,它应该适合你。