簡體   English   中英

更改對象的__proto__的值是否被認為是不好的做法?

[英]Is it considered bad practice to change the value of __proto__ of an object?

我試圖從教程網站復制這段代碼

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

let rabbit = {
  __proto__: animal
};

rabbit.eat();

我收到此錯誤“不贊成使用' proto '屬性”。 我做了很多研究,找到了“ 原型 ”的替代方案,但最終我認為這樣做是不好的做法。 這是我的想法:

  • 上面的例子在現實生活中並不好。 動物和兔子應該是類而不是對象。 我對嗎?
  • 如果這個例子不好,那么在現實生活中需要獲取/設置原型的好例子是什么?

閱讀所有原因,這是不好的做法在這里

警告:根據現代JavaScript引擎如何優化屬性訪問的性質,更改對象的[[Prototype]]在每個瀏覽器和JavaScript引擎中的操作都非常緩慢...

警告:使用Object.prototype時。 如今,大多數瀏覽器都支持proto ,只有ECMAScript 2015規范中才將proto的存在和確切行為標准化為一項遺留功能...

就像您提到自己一樣,它已棄用。 如果您正在學習ES6,那么上課的確是這樣:

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

class Rabbit extends Animal {}

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

Rabbit擴展了Animal.prototype ,而Animal.prototype本身始終擴展了Object.prototype

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM