gpt4 book ai didi

javascript - 更改对象的 __proto__ 值是否被认为是不好的做法?

转载 作者:行者123 更新时间:2023-12-03 01:00:01 25 4
gpt4 key购买 nike

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

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

let rabbit = {
__proto__: animal
};

rabbit.eat();

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

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

最佳答案

阅读为什么这是不好的做法的所有原因 here .

Warning: Changing the [[Prototype]] of an object is, by the nature of how modern JavaScript engines optimize property accesses, a very slow operation, in every browser and JavaScript engine...

Warning: While Object.prototype.proto is supported today in most browsers, its existence and exact behavior has only been standardized in the ECMAScript 2015 specification as a legacy feature...

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

class Animal {
eat() {
this.full = true;
}
}

class Rabbit extends Animal {}

const rabbit = new Rabbit();
rabbit.eat();

Rabbit 扩展了 Animal.prototype,而 Animal.prototype 本身始终扩展了 Object.prototype

关于javascript - 更改对象的 __proto__ 值是否被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670026/

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