この質問と似ていますが、異なります。以下のコードはJavaScriptからのものです:決定的なガイド。彼は基本的に、Object.createが存在する場合はそれを延期する継承メソッドを定義しています。それ以外の場合は、コンストラクターを使用してプロトタイプを交換し、単純な古いJavascript継承を実行します。
私の質問は、Object.createは多くの一般的なブラウザIEには存在しないので、それを使おうとすることの意味は何ですか?それは確かにコードを乱雑にし、前の質問のコメント投稿者の1人は、Object.createはそれほど速くないと述べました。
では、このECMA 5関数をときどき利用するためにコードを追加しようとすることの利点は何でしょうか。これは、これを行う「古い」方法よりも遅い場合とそうでない場合があります。
function inherit(p) {
if (Object.create) // If Object.create() is defined...
return Object.create(p); // then just use it.
function f() {}; // Define a dummy constructor function.
f.prototype = p; // Set its prototype property to p.
return new f(); // Use f() to create an "heir" of p.
}