varsayım x bir nesne ...açık typeof == "undefined" sadece kendi varlığı için kontrol kontrol edin?
if (typeof x.foo != "undefined")
if (x.foo)
?
Bu blog yazısını okurken bu soru geldi: http://www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/
Onun örneğinde, o yapıyor:
function EventTarget(){
this._listeners = {};
}
EventTarget.prototype = {
constructor: EventTarget,
addListener: function(type, listener){
if (typeof this._listeners[type] == "undefined"){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
Bu durumda bu._listeners [tür] hiçbir zaman bir şey olmayacak bir dizi hariç - bu durumda
addListener: function(type, listener){
if (!this._listeners[type]){
this._listeners[type] = [];
}
this._listeners[type].push(listener);
yapmak için daha temiz olacağını doğru değil mi?
Ayrıca, bir yan soru olarak, neden yaptığını anlamıyorum:
EventTarget.prototype = {
constructor: EventTarget
Yeni EventTarget() öğesini çağırdığınızda varsayılan olarak kurucu varsayılan olarak EventTarget ('this') olarak ayarlanmadı mı? ?
üçüncü alternatif bulunmaktadır: 'if (x.foo == tanımsız!)'. * Çift = * (tip zorlama olmadan eşitlik) –
@Dan Uyarı: Bazı aptal 'undefined' değiştirirse o kırar rağmen. Evet, bu mümkün. – delnan
@delnan Doğru ama bu bile karşı korumak için yolu vardır: '(function (tanımsız) {... tanımsız ... Burada gerçekten tanımsız}())' –