更改对象的__proto__值是否被视为不良做法?

  • 本文关键字:不良 是否 对象 proto javascript
  • 更新时间 :
  • 英文 :


我试图从教程网站重现这段代码

let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();

我收到此错误"'proto'属性已弃用"。我做了很多研究来寻找">原型"的替代品,但我最终认为这样做是不好的习惯。以下是我的想法:

  • 上面的例子在现实生活中并不好。动物和兔子应该是类而不是对象。我说的对吗?
  • 如果这个例子不好,那么现实生活中需要获取/设置原型的好例子是什么?

在这里阅读所有为什么这是不好的做法的原因。

警告:根据现代 JavaScript 引擎如何优化属性访问的本质,更改对象的 [[原型]] 在每个浏览器和 JavaScript 引擎中都是非常缓慢的操作......

警告:在对象原型。proto目前在大多数浏览器中都得到支持,它的存在和确切的行为仅在 ECMAScript 2015 规范中作为遗留功能进行了标准化......

就像你自己提到的,这是一个已弃用的功能。如果您正在学习 ES6,那么课程确实是这里要走的路:

class Animal {
eat() {
this.full = true;
}
}
class Rabbit extends Animal {}
const rabbit = new Rabbit();
rabbit.eat();

兔子扩展了Animal.prototype,而本身总是扩展Object.prototype

相关内容

最新更新