2014-05-12 8 views
7

Javascript'te, genellikle bulunmayan bir nesnenin niteliğine erişmek istiyorum. ÖrneğinKimi zaman boş bir nesnenin bir özelliğine bir hata olmadan erişme

: someObject tanımlı değilse

var foo = someObject.myProperty

Ancak bu bir hata verir. Potansiyel null nesnelerin özelliklerine erişmenin geleneksel yolu nedir ve mevcut değilse, yanlış veya null döndürür?

Ruby'de someObject.try(:myProperty) yapabilirim. JS eşdeğeri var mı?

+0

kontrol etmek. – melancia

cevap

2

gibi, bunu denetleyen bir işlev yaratabilir, undefined bir falsyvalue

+0

kullanışlı kullanışlı kullanışlı, –

+0

'Nesne.prototype.safeGet' için botbuilder çöküyor .. garip ... –

1

Ben

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

Ayrıca ile de property denetimi ekleyebilirsiniz öneririm:

if(someObject.myProperty) 
ilk if

içeride açıkça

Ya ('belki' daha az doğru)

if(someObject) 
    var foo = someObject.myProperty 
0 sizin için sık sık bir istek varsa

ikinci örnek

function getValueOfNull(obj, prop) { 
    return(obj == null ? undefined : obj[prop]); 
} 
1

olarak tanınır çünkü çalışmalıdır orada olduğunu sanmıyorum JavaScript'te sorduğunuz şeylerin doğrudan bir karşılığı. Ama aynı şeyi yapan bazı kullanım yöntemleri yazabiliriz.

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

İşte JSFiddle var: kendi türü bir yoludur tanımlanmamış ise http://jsfiddle.net/LBsY7/1/

İlgili konular