2014-06-27 6 views
5

अलग obj != null;ऑब्जेक्ट (obj) === obj क्या करता है?

मुझे पता है कि obj != null कुछ भी है कि के रूप में बातिल और अपरिभाषित जो गुण नहीं कर सकते हैं केवल दो मान हैं उस पर गुण होते हैं करने की अनुमति है की पहचान करेगा से।

यह कैसे से

Object(obj) === obj;

+0

परिणाम वास्तव में समान नहीं है। उदाहरण के लिए, एक स्ट्रिंग या संख्या आदिम ले लो: यह है! = शून्य लेकिन इसकी ऑब्जेक्ट बॉक्सिंग समकक्ष === आदिम रूप नहीं है। –

उत्तर

6

Object(obj) === obj परीक्षण obj एक वस्तु या एक आदिम, तार के लिए भी नाकाम रहने के है या नहीं, आदि

console.log(Object('foo') === 'foo'); // false 
console.log(Object(true) === true); // false 
console.log(Object(null) === null); // false 

var obj = {}; 
console.log(Object(obj) === obj);  // true 

यह निर्धारित करने के लिए उपयोगी है यदि मूल्य दिया जा सकता है और एक निर्दिष्ट संपत्ति याद रखें।

जबकि null और undefined एकमुश्त त्रुटि,, गुणों का उपयोग करने के लिए है, जिसके कारण obj != null अभी भी उपयोगी है no primitive values are able to hold onto properties प्रयास में।

var pri = 'foo'; 
pri.foo = 'bar';  // no error, but still... 
console.log(pri.foo); // undefined 

var box = Object(pri); 
box.foo = 'bar'; 
console.log(box.foo); // 'bar' 

संदर्भ:

जब objnull या undefined, Object(obj) returns a new Object() है:

1) यदि मूल्यnull, undefined या आपूर्ति नहीं की है, बना सकते हैं और एक नया वापसी ऑब्जेक्ट ऑब्जेक्ट बिल्कुल वैसा ही है जैसे मानक निर्मित ऑब्जेक्ट कन्स्ट्रक्टर हा डी को एक ही तर्क के साथ बुलाया गया था (15.2.2.1)।

और, आदिम बूलियन्स, स्ट्रिंग्स और संख्या ToObject() के माध्यम से अपने वस्तु प्रकार हैं, जिनमें उनके आदिम समकक्ष के बराबर नहीं हैं में बॉक्सिंग कर रहे हैं:

2) लौटें ToObject (मूल्य)।

console.log(typeof 'foo' === 'string');   // true 
console.log(typeof Object('foo') === 'object'); // true 

console.log('foo' instanceof String);   // false 
console.log(Object('foo') instanceof String); // true 
-2

पहचान कैसे भिन्न होता है (===।! ==)

इन ऑपरेटरों को छोड़कर कोई रूपांतरण किया जाता है समानता ऑपरेटरों को समान रूप से व्यवहार, और प्रकार बराबर माना जाना चाहिए।

http://www.c-point.com/javascript_tutorial/jsgrpComparison.htm

अच्छा ढेर अतिप्रवाह लिंक Which equals operator (== vs ===) should be used in JavaScript comparisons?

आशा है कि यह मदद करता है

+2

मुझे नहीं पता कि यह सवाल का जवाब कैसे देता है। यह सिर्फ इसके बारे में नहीं है! = और! ==, बल्कि यह 'x है!= शून्य 'और' ऑब्जेक्ट (x) === x' –

+0

पहला लिंक मूल जेएस ऑपरेटर अर्थ देता है और दूसरा लिंक (एसओ) उत्तर बहुत बेहतर बताता है। उन दो लिंक ने मुझे समस्या का ठोस जवाब दिया। – Kris

संबंधित मुद्दे