为什么我不能通过Object.defineProperties()在原型上定义属性或函数?

问题描述 投票:3回答:1

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

为什么?

javascript prototype prototypal-inheritance
1个回答
3
投票

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

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

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

你得到错误Object.defineProperties called on non-object只是因为obj.prototype不是一个对象而且是未定义的。

把它设置为窗口或空{},它应该适合你。

© www.soinside.com 2019 - 2024. All rights reserved.