Are Object.prototype'ın genişletilmesiyle bağdaşmayan büyük bir modern kütüphanenin gerçek dünya örnekleri var mı?
Evet, örneğin
az müdahaleci libraries- biridir -ki jQuery, sorunlarını hatırlamak
:
hatırladığım bir diğer olgu olmasıdır birisi işlevini Object.prototype
nesnesine ekledi ve $().load
olayına neden oldu:
Örnek here.
Object.prototype
nesnesini bu şekilde genişletmek asla tavsiye edilmez, çünkü bu özellikler çok sayıda nesne tarafından devralınır - bazı ana nesneler tarafından da olsa - ve bildiğiniz gibi, birincil sorun sayılırlar. for-in
ifadesiyle. şimdi olmayan enumerable özelliklerini ilan edebilir çünkü
ECMAScript'e 5'te
, şimdi daha güvenli bir yoldur, örneğin, mevcut: özellik tanımlayıcısı olarak
Object.defineProperty(Object.prototype, 'foo', { value: 'bar' });
- { value: 'bar' }
- biz özellik özelliklerini belirleyebilir, durumda Değer Özellikleri yukarıdaki örnekte olduğu gibi nedeniyle, writable
özelliği belirtebilirsiniz ve ortak configurable
özniteliği (belirleyen bir özellik -attribute Yapılanma veya silinmiş.
yeniden yapılandırılabilir ve ayrıcavarsa Özelliğin for-in
bildirimi tarafından numaralandırılıp listelenmeyeceğini belirleyenözniteliği.
biz özelliklerini belirtmek yoksa, bunlar gibi false
varsayılan olarak, tanımlayıcı bakacağız şunlardır: Bu konuda güzel bir tartışma var
{
value: 'bar',
writable: false,
configurable: false,
enumerable: false
}
(http [Object.prototype erlaubt dir]: // www.thomasfrank.se/object_prototype_is_erlaubt.html) –