2012-07-01 20 views
7

明らかに、これは標準準拠ではなく、IEがサポートしていないにもかかわらず、プロトタイプチェーンを操作する主な方法は依然として__proto__です。 newコンストラクタを使用して継承を構築することもできますが、これは__proto__プロパティまたは標準準拠のObject.getPrototypeOf関数と比較して不要な合併症のように思えます。ECMAScript標準でObject.setPrototypeOf(...)が存在しないのはなぜですか?

編集:の回答で述べたように

、この方法は、現在(ES6規格)が存在しません。しかし、パフォーマンスの警告に注意してください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf

+5

それはObject.setPrototypeOf()がES6に入ったようですhttp://webreflection.blogspot.pt/2013/05/objectsetprototypeofo-proto-is-in-es6.html – banzomaikaka

答えて

2

Brendan Eichこのhere言う:

Object.setPrototypeOfが起こるだろうされていません。書き込み可能な__proto__は の巨大な痛み(サイクルチェックを行うためにシリアライズする必要があります)であり、あらゆるタイプの混乱の危険性がある を作成します。あなたはそれが低レベルの鋭い楽器 として欲しいと思うかもしれません。 JSはその言語ではありません。クラスとmixinsのためのより高いレベルの フォームははるかによく見え、そのような シャープなエッジを伴わない。

+0

答えをありがとう、私は私が認めないといけないそれを完全に理解する。あなたの考えは、Javascriptで非プロトタイプベースの継承を追加することですか?私の考えでは、Object.setPrototypeOfは単にプロトタイプオブジェクトリファレンスを作成するので、これがどのようにシリアライズを必要とするのか分かりません。彼は間違っていたよう – JussiR

+6

は思え:) だけChromeでで得た:https://code.google.com/p/v8/source/detail?r=18685 と、それはすでにFirefoxで実験です: HTTPS ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf – lucasarruda

+0

@Esailija 2017年のあなたの意見は?パフォーマンスと最適化(あなたが書く/投稿するライブラリ)のときには、 "深刻"に思えるので、あなたの考えを知りたいと思います。 –

関連する問題