我试图从教程网站复制这段代码
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
我收到此错误“已弃用' proto '属性”。我做了很多研究,找到了“ proto ”的替代方案,但最终我认为这样做是不好的做法。这是我的想法:
答案 0 :(得分:1)
阅读所有不当做法的原因here。
警告:根据现代JavaScript引擎如何优化属性访问的性质,更改对象的[[Prototype]]在每个浏览器和JavaScript引擎中的操作都非常缓慢...
警告:尽管大多数浏览器现在都支持Object.prototype。 proto ,但ECMAScript 2015规范仅将其存在和确切行为标准化为遗留功能...
就像您提到自己一样,它已被弃用。如果您正在学习ES6,那么classes确实是前往此处的方法:
class Animal {
eat() {
this.full = true;
}
}
class Rabbit extends Animal {}
const rabbit = new Rabbit();
rabbit.eat();
Rabbit扩展了Animal.prototype
,它本身始终扩展了Object.prototype
。