C# ve Python gibi dillerde var olan bu özellikle ES6 ile Javascript dünyasına da giriş yaptı. Nesne reflection, çalışma zamanında (runtime) nesne özelliklerinde inceleme ve düzenleme yapabilen bir programlama dili yeteneğidir. Birçok genel nesneden farklı olarak, Reflect bir yapıcı gibi düşünülmemelidir. Reflect’in tüm property ve metotları statiktir.
Temel birkaç özelliğini göstereceğim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
let obj1 = {ad: "ES6, get"} let adi = Reflect.get(obj1, "ad") console.log(adi) let obj2 = {ad: ""}; Reflect.set(obj2, "ad", "ES6, set"); console.log(obj2.ad); let obj3 = {}; Reflect.defineProperty(obj3, "ad", {value: "ES6, define"}); console.log(obj3.ad); let obj4 = {ad: "ES6, delete"}; Reflect.deleteProperty(obj4, "ad"); console.log(obj4.ad); let obj5 = {ad: "ES6"}; console.log(Reflect.has(obj5, "ad")); |
1 2 3 4 5 |
ES6, get ES6, set ES6, define undefined true |
Reflect.get ile bir nesnenin özelliklerine erişebilir, Reflect.set ile özelliğine değer atayabilir, Reflect.defineProperty ile yeni bir özellik tanımlayıp değerlerini atayabilir, Reflect.deleteProperty ile nesne içinden bir özelliği silebilir ve Reflect.hs ile özelliğin var olup olmadığını bulabiliriz. Tüm bu işlemler çalışma zamanında yapılmıştır. Özellikle çalışma zamanında nesne üzerinde bu tür işlemlere gerek duyarsanız, Reflect konusu anahtar kelimeniz olacaktır.