Object Observe
ECMAScript 7’nin belki de en onemli ozelligi olan Object.observe
Chrome 36 ile resmen hayatimiza girdi ve artik object uzerinde olusan degisiklikleri native bir sekilde dinlemek ve aksiyon almak mumkun.
Aslinda bir cogumuz gundelik hayatinda bu ozelligi Angular, Backbone, Ember gibi framework’ler ile zaten kullaniyor fakat bu ozelligin JavaScript’e native olarak geliyor olmasi cok daha heyecanlandirici bir durum. Ayrica suradaki Angular developer’larin yaptigi testlerde Angular ile native Object.observe
arasinda 20x-40x performans farki olmasi da bir baska guzel haber.
Ufak bir ornek ile nasil kullanabilecegimizi gostereyim.
1 | obj = { |
obj
diye basit bir object’imiz var ve Object.observe(obj, callbackFn)
ile bu object uzerinde olusacak degisiklikleri dinlemeye basladik. Simdi obj.nickname degerini fatihacet
olarak degistirelim ve asagidaki console ciktisina bakalim.
obj.nickname = 'fatihacet'
Yukaridaki degisikligi yaptigimiz zaman callback function’imiza gelen change
object’i icinde degisiklik ile ilgili detaylar mevcut.
name
alaninda degisikligin oldugu field adiobject
alaninda object’imizin degisiklikden sonraki halioldValue
alaninda degisiklikden onceki degeritype
alaninda ise degisikligin tipi.update
add
vedelete
olabiliyor. Bizim ornegimizdeupdate
Object.observe
tabi ki array’ler icin de calisiyor. Fakat cok ufak degisiklikler ile. Asagidaki console ciktisina bakalim ve sonra devam edelim.
k.splice(1, 1, 1)
ile arrayin 1. index’inden baslayarak 1 item cikardik ve yerine 1
sayisini koyduk ve console’da log’lagimiz change
object’inde addedCount
, index
ve removed
gibi yeni key’ler gorduk. Bunlar yapilan degisiklikle ilgili detaylar.
addedCount
kac tane item ekledigimiz.index
array’imizin hangi index’inde degisiklik olduguremoved
ise array’den cikardigimiz item’lardan olusan bir array
Bu yeni ozellik suan icin sadece Chrome 36’da bulunmakta. Butun modern browser’lar implement ettigi zaman suan kullandigimiz butun framework’lerin cok daha performansli calismasi mumkun. Ozellikle Angular, Ember gibi framework’lerin en buyuk ozelliklerinden biri olan Two Way Data Binding‘i cok kolay bir sekilde kendi uygulamamiz icin kullanabiliriz. Basit bir ornegi icin suradaki JSFiddle’ima bakabilirsiniz.
Konuyla ilgili daha fazla bilgi icin,
Comments