मैं कोड की निम्न 2 सेट के अंतर को समझने के लिए संघर्ष कर रहा हूँ के माध्यम से संपत्ति काम। मूल कोड the famous Ninja tutorial से है और मैंने अपने लिए थोड़ा सा सरल बना दिया है।जावास्क्रिप्ट: प्रोटोटाइप
प्रश्न: मुझे लगता है कि मैं समझता हूं कि कोडेए कैसे काम करता है। Ninja.prototype.swung = false
function Ninja()
में एक नई संपत्ति असाइन कर रहा है, और ninjiaA.swung
उस वजह से झूठी मूल्यांकन करता है। हालांकि, CodeB, में जब हम घोषणा करते हैं शुरुआत में this.swung = true
साथ function Ninja()
, Ninja.prototype.swung = false
के बाद के काम एक प्रभाव नहीं ले करता है, और ninjaA.swung
सच करने के लिए मूल्यांकन किया जाना बना रहता है। मैं समझने में असफल रहा हूं कि बाद में असाइनमेंट कोडब में क्यों काम नहीं करता है। क्या कोई मुझे इस पर प्रबुद्ध कर सकता है?
CodeA:
function Ninja(){}
Ninja.prototype.swung = false;
var ninjaA = new Ninja();
ninjaA.swung; //evaluates to false
CodeB:
function Ninja(){
this.swung = true;
}
Ninja.prototype.swung = false; //I'm expecting this changes swung to false,
//but it doesn't.
var ninjaA = new Ninja();
ninjaA.swung; //evaluates to true
धन्यवाद अग्रिम में एक बहुत।
+1 - अच्छी तरह से बाहर रखा! –
मैंने 'pre' टैग का उपयोग करने के लिए आपका उत्तर संपादित किया। मुझे जवाब की गुणवत्ता से अलग करने के लिए लगभग विनोदी रंग मिलते हैं। – ChaosPandion
@ डैन - धन्यवाद :) @CoosPandion - परिवर्तन के लिए धन्यवाद, अब बहुत बेहतर दिखता है :) – Anurag