5
की विरासत शायद यह प्रश्न आसान है, लेकिन अब मैं समझ नहीं पा रहा हूं।जावास्क्रिप्ट
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
यदि आपको कारण पता है, तो कृपया मुझे बताएं कि परिणाम "झूठा" क्यों है।
दूसरे उदाहरण क्यों असफल करता है:
यह तुलना करने की तरह है? –
@ अभिव्यक्ति में आलेख 's.self() == s.self() ',' s' चर में निहित मान को दो बार' ToObject' को मजबूर किया जाता है, क्योंकि 's' में एक आदिम होता है, जब बिंदु ('.') संपत्ति एक्सेसर का उपयोग किया जाता है, 'स्ट्रिंग.प्रोटोटाइप' सदस्यों तक पहुंचने में सक्षम होने के लिए ऑब्जेक्ट को मजबूर किया जाता है। तुलना लगभग 'var s =' s के बराबर होगी; नई स्ट्रिंग (ओं) == नई स्ट्रिंग; 'जो' झूठी 'भी उत्पन्न करती है। – CMS
@ ग्रामैन शब्द शर्तों में, हालांकि दोनों स्ट्रिंग ऑब्जेक्ट्स में एक ही डेटा होता है, वे अलग-अलग वस्तुएं हैं, और इस प्रकार == झूठी हैं। – Stephen