この質問は、イェフダ・カッツによるこの記事から着想を得ています。 関連する部分はこれです:
オブジェクト指向プログラミングを容易にするために、JavaScriptでは、新しいオブジェクトに使用するプロトタイプと呼び出すコンストラクター関数の組み合わせとしてFunctionオブジェクトを使用できます。
var Person = function(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; } Person.prototype = { toString: function() { return this.firstName + ' ' + this.lastName; } }
ここでは、コンストラクター関数であり、新しいオブジェクトのプロトタイプとして使用するオブジェクトでもある単一のFunctionオブジェクトがあります。
コンストラクターとして機能するFunctionオブジェクトとプロトタイプが違うように見えるので混乱しています。これは、chromeからの次のコンソール出力から明らかです。
つまり、コンストラクター関数は、firstNameとlastNameの2つの引数を持つ上記の関数オブジェクトです。一方、プロトタイプは、たまたま1つのプロパティ(toString)を持つ通常のオブジェクトであり、これは別の関数オブジェクトによって定義されます。function() { return this.firstName + ' ' + this.lastName; }
私は彼の言っていることを誤解していますか、それとも記事は間違っていますか?