2014-05-12 11 views
7

जावास्क्रिप्ट में, मैं अक्सर उस ऑब्जेक्ट की विशेषता तक पहुंच बनाना चाहता हूं जो मौजूद नहीं हो सकता है।किसी भी त्रुटि के बिना कभी-कभी शून्य ऑब्जेक्ट की किसी संपत्ति को एक्सेस करें

उदाहरण के लिए: अगर someObject परिभाषित नहीं है

var foo = someObject.myProperty

हालांकि यह एक त्रुटि फेंक देते हैं। संभावित रूप से शून्य वस्तुओं के गुणों का उपयोग करने का पारंपरिक तरीका क्या है, और यदि यह अस्तित्व में नहीं है तो बस झूठी या शून्य वापस आती है?

रुबी में, मैं someObject.try(:myProperty) कर सकता हूं। क्या एक जेएस बराबर है?

+0

जांच करने के लिए। – melancia

उत्तर

2

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

Object.prototype.safeGet = function(key) { 
    return this? this[key] : false; 
} 
var nullObject = null; 
console.log(Object.safeGet.call(nullObject, 'invalid')); 

यहाँ JSFiddle है: यदि अपने प्रकार अपरिभाषित है एक तरीका है http://jsfiddle.net/LBsY7/1/

+0

आसान आसान काम, धन्यवाद –

+0

'Object.prototype.safeGet' मेरे लिए botbuilder दुर्घटनाग्रस्त .. अजीब ... –

1

मेरा सुझाव है

if(typeof someObject != 'undefined') 
    var foo = someObject.myProperty 
else 
    return false; //or whatever 

तुम भी साथ भी property पर नियंत्रण जोड़ सकते हैं,:

if(someObject.myProperty) 
स्पष्ट रूप से पहले if

अंदर

या ('शायद' कम सही)

if(someObject) 
    var foo = someObject.myProperty 

दूसरे उदाहरण काम करना चाहिए क्योंकि undefined एक falsyvalue

1

के रूप में पहचाना जाता है तो यह आप के लिए एक लगातार अनुरोध है, तो आप एक समारोह है कि यह जाँच करता है बना सकते हैं, जैसे

function getValueOfNull(obj, prop) { 
    return(obj == null ? undefined : obj[prop]); 
} 
संबंधित मुद्दे