3

我想一次在我的对象的原型上设置多个属性,因为 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

为什么?

4

1 回答 1

3

这是因为,obj.prototype未定义。

您将其指向其他对象,属性将被添加到它。

JS 有一个基于原型的继承模型,其中一个对象从另一个对象继承,如果它没有属性或方法,它会查看它的原型对象,它只是另一个具有属性和方法的对象,它又可能有自己的原型对象.

您收到错误Object.defineProperties called on non-object只是因为obj.prototype它不是对象并且未定义。

将其设置为 window 或 empty {},它应该适合您。

于 2013-04-17T08:43:26.630 回答