これはばかげた質問のように思えますが...
コンストラクターがある場合:
function Candy(name) {
this.name = name;
}
そして、このオブジェクト Candy のプロトタイプを拡張します。
Candy.prototype.printName = function(name) {
console.log(this.name);
};
次に、Candy コンストラクターから新しいオブジェクトを作成し、この新しいオブジェクトに対して継承されたメソッドを実行します。
var chocolate = new Candy("chocolate");
chocolate.printName();
出力としてチョコレートが得られる理由については、私にはわかりません。
コンストラクターからチョコレートオブジェクトを作成するとき、本質的にこれを行いました:
var chocolate = new Candy();
chocolate.name = name;
もしそうなら、なぜ実行すると次のようになるのですか:
chocolate.printName();
空白の引数を指定すると、「chocolate」? と吐き出します。
チョコレートは、単に Candy コンストラクターから構築したオブジェクトの名前ではありませんか?
のように、chocolate は、chocolate.name パラメータに割り当てたものではありませんが、name です。空の引数フィールドを渡したのに、名前が返されずに「チョコレート」が返されるのはなぜですか?