2016-03-27 24 views
1

Ben bir nesne gibi:Atma hatası var olmayan özellik

const foo = { 
    bar: 'bar' 
}; 
Ben böyle birisi var olmayan bir özellik erişmeye çalıştı eğer bir hata ziyade atılmış olacağını değiştirmek istiyoruz

undefined dönüşünden daha. Örneğin

,

const baz = foo.baz; 
// Error: Property 'baz' does not exist on object 'foo' 

bu mümkün mü?

cevap

2

ECMAScript 6 ile proxy'leri kullanabilirsiniz.

var original = {"foo": "bar"}; 
var proxy = new Proxy(original, { 
    get: function(target, name, receiver) { 
     console.log("Name of requested property: " + name); 
     var rv = target[name]; 
     if (rv === undefined) { 
      console.log("There is no such thing as " + name + ".") 
      rv = "Whatever you like" 
     } 
     return rv; 
    } 
}); 

console.log("original.foo = " + proxy.foo);  // "bar" 
console.log("proxy.foo = " + proxy.whatever); // "Whatever you like" 

https://jsfiddle.net/u5b3wx9w/

+0

mükemmeldir. Tam olarak aradığım şey bu! Teşekkürler. –

İlgili konular