Se ho una funzione come questa:Override di una funzione senza rimuovere le proprietà statiche
function a() {
console.log('a');
}
e quindi assegnare una proprietà statica come questo:
a.static = 'foo';
Ma dico io voglio ignorare la funzione con un'altra funzione come questa:
var old = a;
a = function() {
console.log('new');
old.call(this);
};
a.static // undefined
da quando ho assegnato una nuova funzione per a
, le sue proprietà statiche sono perse. C'è un modo pulito per mantenere le proprietà statiche senza loop e copiarle manualmente?
Aggiornamento:
Ecco uno scenario del mondo reale: In plugin Bootstrap jQuery, l'autore assegna il valore predefinito è la funzione di proprietà come questa:
$.fn.modal = function() {
// some code
};
$.fn.modal.defaults = { // some object };
Quindi, se voglio di "estendere" la prototipo io normalmente fare:
var old = $.fn.modal;
$.fn.modal = function() {
// do my thing
old.apply(this, arguments);
}
Ma che renderebbero
$.fn.modal.defaults === undefined
Ciò interromperà la funzionalità, poiché i valori predefiniti vengono persi. Mi stavo chiedendo se c'è un modo subdolo in javascript per cambiare solo la funzione senza perdere le proprietà statiche.
Posso chiedere quale è l'utilizzo di tale approccio? Sembra davvero disordinato. – Christoph
Sto chiedendo perché nei plugin jstery di bootstrap, l'autore assegna i valori di default statici come un oggetto collegato al prototipo. Quindi, se voglio estenderlo, perdo le impostazioni predefinite (e possibilmente altre proprietà) che sono allegate. Inoltre, perché sono curioso di sapere se esiste un modo per cambiare solo la funzione, non le sue proprietà statiche. – David