gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:47:52 24 4
gpt4 key购买 nike

我想一次在我的对象的原型(prototype)上设置多个属性,因为 Object.defineProperties() 需要一个对象(原型(prototype)是一个对象)和描述符,而我的对象 obj 已经有一个原型(prototype),因为它与每个对象,我正在尝试如下修改我的对象的原型(prototype)

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 有一个基于原型(prototype)的继承模型,其中一个对象继承自另一个对象,如果它没有属性或方法,它会查看它的原型(prototype)对象,它只是另一个具有属性和方法的对象,它可能再次具有它的属性和方法自己的原型(prototype)对象。

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

将其设置为窗口或空的 {},它应该适合您。

关于javascript - 为什么我不能通过 Object.defineProperties() 在原型(prototype)上定义属性或函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16055302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com