Douglas Crockford による JavaScript の入門講義を見たところです。その中で彼はobject
、オブジェクトにパラメーターとしてリンクされた新しいオブジェクトを作成するために使用する関数について言及しています。彼の言いたいことは、私が言うなら
var objB = object(objA);
のobjB
内部[[prototype]]
参照は に設定されてobjA
いますが、彼はそのように明示的に定式化していません。
一方、私は彼の本を読んだことがありますが、その中で彼はそのような関数についてまったく言及しておらず、代わりにプロトタイプからオブジェクトを作成する独自の方法を提示し、次の関数を定義しています。
Object.create = function(o) {
var F = function() {};
F.prototype = o;
return new F();
}
基本的に、新しく作成されたオブジェクトnew
の内部[[prototype]]
リンクをコンストラクター関数のprototype
プロパティが指すものに設定するオペレーターの動作を利用します。
私の質問は、なぜ彼が組み込み関数を省略し、同じことを行う独自の方法を発明したのかということです。関数への以前の呼び出しはobject
本当に同等ですか
var objB = Object.create(objA);
それとも若干の違いはありますか?