Kabul edilen cevap harika. Kompakt "ok işlevi sözdizimi" yerine normal işlev sözdizimini kullanmak istiyorsanız en iyisi budur .
Ama belki gerçekten ok işlevlerini seviyorsunuz; ok işlevini normal işlev sözdiziminin yerini alamayacağı başka bir nedenle kullanıyorsunuz ; farklı bir çözüme ihtiyacınız olabilir.
Örneğin, OP'nin kullandığını fark ettim this
, sözcüksel olarak bağlanmakthis
isteyebilirsiniz ; aka "bunun bağlayıcılığı yoktur" ) ve ok işlevleri sözlü bağlama için iyidir.
Yine de Object.defineProperty
teknik yoluyla bir alıcı ile bir ok işlevini kullanabilirsiniz .
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Bkz bahseder object initialization
tekniği (aka get NAME() {...}
) vs defineProperty
tekniği (aka get : ()=>{}
) . En az bir önemli fark vardır, kullanımı defineProperty
değişkenlerin zaten mevcut olmasını gerektirir:
Mevcut nesneler üzerinde alıcı tanımlama
yani (benim örneğimde) var olduğundan ve bir değişkene kaydedildiğinden Object.defineProperty
emin olmalısınız your_obj
(oysa bir ile object-initialization
nesne başlatmanızda bir nesne değişmezi döndürebilirsiniz :) {..., get(){ }, ... }
. Özellikle burada daha fazla bilgiObject.defineProperty
Object.defineProperty(...)
get NAME(){...}
sözdizimiyle karşılaştırılabilir bir tarayıcı desteğine sahip görünüyor ; modern tarayıcılar, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.