コンストラクタがあります。 CとJavaの人々にJavaScriptをより読みやすくするための特殊な関数です。
どのように特別な質問をしますか?
これはまさにあなたが演奏しているオブジェクトを返さずに言及した理由によるものです。何も返さなければ、空のオブジェクトthis
の値を返します。通常、関数内でthis
は、window
を参照するか、またはo.method
this
などの状況に基づく他のものは、通常の状況下でo
を参照します。あなたの場合、これはコンストラクタであり、新しいもので呼び出されたため、にプロトタイプを設定し、createCar.prototype.constructor
を指すprototype.constructorを指す新しい空のオブジェクトを指します。createCar
です。上記の回答が指摘しているように、これを修正すると、あなたが期待しているような動作が得られます。これはちょうどうまくいくものです。
これらの回答はCコードのように見えますが、JavaScriptコードをどのように楽しくしていますか?試してみてください:
function createCar(sColor, iDoors, iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
//return this; //Not needed, but is what happens under the covers
}
createCar.prototype = {
showColor: function(){
alert(this.color);
}
}
var oCar1 = createCar("red", 4, 23);
var oCar2 = createCar("blue", 3, 25);
oCar1.showColor(); //alerts “red”
oCar2.showColor(); //alerts “blue”
もう、退屈です!もっと楽しいことができます。
createCar.prototype.showColor.call(oCar1); //Alerts "red"
createCar.prototype.showColor.call(new createCar("red")); //Also alerts red
TBH、私は決してコンストラクタを使用しませんが、あなたの足を濡らすための良い方法です。
あなた自身の質問に答えました。あなたが知りたいことが他に何かありますか? –
はい、あなたは常に傲慢からコードをインデントする必要があります。 –