2017-03-17 9 views
1

ここでオブジェクトメソッドのセクションで私はSusanの年齢を変更するよう求められました。
ここでは、コード
JavaScriptのオブジェクトメソッドを理解できません

// Change Age Function 
var setAge = function (newAge) { 
    this.age = newAge; 
}; 
// New Object Bob. 
var bob = new Object(); 
bob.age = 30; 

// New Object Susan. 
var susan = new Object(); 
susan.age = 25; 

// Changing Susan Age. 
susan.setAge = setAge; 
susan.setAge(35); 

console.log(susan.age); // Output is 35. 

はだから今、私の質問は、このDOを何です:

susan.setAge = setAge; 

、なぜ私は単にここ

susan.setAge(35); 

を書き込むことはできませんが1以上でありますこのコードでは、長方形の高さと幅を変更する必要があります。上記のコードで

//declaring new object rectangle 
var rectangle = new Object(); 
rectangle.height = 3; 
rectangle.width = 4; 

// change height function 
rectangle.setHeight = function (newHeight) { 
    this.height = newHeight; 
}; 

// Change width function 
rectangle.setWidth = function(newWidth){ 
    this.width = newWidth ; 
} 

// changing Height and Width 
rectangle.setHeight(6); 
rectangle.setWidth(8); 

console.log(rectangle.height + " " + rectangle.width); //output is 6 8 

私はINORDERラインsusan.setAge(35);仕事をする

rectangle.setHeight = setHeight;   
rectangle.setWidth = setWidth; 

答えて

1

を書いていなかったにもかかわらず、エラーなしで答えを得ることができた、あなたはsusanオブジェクトの右にsetAge()機能を必要とします?あなたがトップに近い見れば

susan.setAge = setAge; 

は、あなたが同じ名前を持つオブジェクトsusanにその機能を設定することになりまし機能

// Change Age Function 
var setAge = function (newAge) { 
    this.age = newAge; 
}; 

を宣言susan.setAge

更新:

susan.setAge = setAge; 

と同じ理由は、あなたの他の例では、あなたが更新に示すように、あなたが直接機能を割り当てているので、その行を記述する必要はありません、ある

susan.setAge = function (newAge) { 
    this.age = newAge; 
};; 

として。

+0

しかし私の他の例では私は入れませんでした 'rectangle.setHeight = setHeight'; 'rectangle.setWidth = setWidth'; –

+0

@AyushKatoch答えを更新しました。あなたの関数を変数に代入して後で使用することです。後者の場合は、直接 –

+0

を割り当てています。ありがとうございました。 –

0

一般的に、セッターはあなたのオブジェクトを可変にします。悪い考えです。 gettersは "オブジェクトに何をすべきかを教え、情報を要求せず、自分で操作する"と違反します。したがって、一般的には、デフォルトでセッターとゲッターを追加しないでください。しばしばそれらが必要になりますが、追加する前に常に本当の必要があるはずです。特にセッターは生産コードでは決して使用しないでください。可能であれば不変性のために努力してください。突然変異が必要な場合は値を設定しないでください。

関連する問題