çıkarmadan bir işlevi geçersiz kılma:Böyle bir işlevi varsa statik özellikler
function a() {
console.log('a');
}
ve sonra böyle bir statik özellik atayın:
a.static = 'foo';
Ama birlikte işlevini geçersiz kılmak istediğini söylüyorsun Bunun gibi bir işlevi:
var old = a;
a = function() {
console.log('new');
old.call(this);
};
a.static // undefined
Ben a
yeni fonksiyona yana bu statik özellikler kaybolur. Statik özelliklerin döngü oluşturmadan ve el ile kopyalanmadan tutulması için düzgün bir yol var mı?
Güncelleme:
Size gerçek dünyadan senaryo: Ben de "genişletmek" istiyorum
$.fn.modal = function() {
// some code
};
$.fn.modal.defaults = { // some object };
: Önyükleme jQuery eklentileri, yazar böyle mülkiyet işlevine varsayılan atar
var old = $.fn.modal;
$.fn.modal = function() {
// do my thing
old.apply(this, arguments);
}
Ama bu
yapacak: prototip normalde yapacağını$.fn.modal.defaults === undefined
Bu, işlevselliği bozar, çünkü varsayılanlar kaybolur. Javascript sinsi bir yolu sadece işlevini statik özelliklerini kaybetmeden değiştirmek için var mı diye merak ediyordum.
Böyle bir yaklaşımın ne işe yaradığını sorabilir miyim? Gerçekten dağınık görünüyor. – Christoph
Bootstrap jQuery eklentilerinde, yazarın prototipine eklenmiş bir nesne olarak statik varsayılanlar atamasını istedim. Yani eğer onu uzatmak istersem, bağlı olan varsayılanları (ve muhtemelen diğer özellikleri) kaybederim. Ayrıca, yalnızca işlevi değiştirmenin bir yolu olup olmadığını merak ettiğimden, çünkü bu statik özelliklerden değil. – David