È possibile definire un prototipo solo per {} -Objects?Definire il prototipo solo per gli oggetti {...}
In Javascript, quasi tutto è un oggetto.
Object.prototype.test = function() {
alert("test");
}
Tutti gli oggetti (compresi numeri, stringhe e array) avranno questo metodo. Ma lo voglio solo per un oggetto struct. > {...} <
È possibile prima creare tutti i prototipi per l'oggetto ed eliminarlo da altri come Numero, String e Array.
// Overwrite
Array.prototype.test = undefined; // or delete property
Questo "funziona" ... Il prototipo viene sovrascritto. Ma la chiave esiste ancora.
// Show all keys
for (key in arr)
{
alert(key); // print index of array AND keynames
}
Sto cercando il modo più elegante per farlo.
Non modificare il prototipo 'Object' a meno che non si intende la proprietà di essere disponibile su ogni oggetto, che lei ha dichiarato che non vuoi. Indipendentemente da ciò, la modifica del prototipo 'Object' è quasi sempre una cattiva idea. Invece, dovresti posizionare la proprietà sul prototipo di una classe che controlli e ereditare da quella necessaria. –
Inoltre, l'eliminazione della proprietà dal prototipo 'Array' non farà ciò che si desidera. Chiamando 'test' su un array verrà comunque eseguita la funzione, perché salirà la catena del prototipo e la chiamata semplice' test' sul prototipo 'Object': http://jsfiddle.net/x2wysox8/ –
non elimina la proprietà 'test' da' Array.prototype', basta lanciare un errore su chiamata, se si desidera limitare l'accesso al metodo 'Object.prototype.test'. Ma aggiungere metodi a 'Object.prototype' è una cattiva pratica, e pensateci due volte, prima di fare questo –