我是JS新手,我在下面编写代码,但是我得到了错误" Prototype未定义"。
var proto = {
describe: function () {
return 'name: ' + this.name;
}
};
var obj = {
[[Prototype]]: proto, //error in this line
name:'obj'
};
console.log(proto.describe());
console.log(obj.describe());
答案 0 :(得分:2)
[[Prototype]]
只是内部属性的规范 - 语音(原型链中的链接)。要通过原型链将obj
与proto
相关联,您可以使用Object.create
:
var obj = Object.create(proto);
obj.name = 'obj';
或ES6 / ES2015中的Object.setPrototypeOf
:
var obj = {
name:'obj'
};
Object.setPrototypeOf(obj, proto);
或者,有遗留属性__proto__
,但不一定建议这样做:
var obj = {
__proto__: proto,
name:'obj'
};
答案 1 :(得分:-1)
你不能像这样设置对象的原型。
解决方案与其他答案一样。 阅读这篇文章以获得完整的解释:
https://zeekat.nl/articles/constructors-considered-mildly-confusing.html