Czy możliwe jest zdefiniowanie prototypu tylko dla {} -Objects?Definiowanie prototypu tylko dla obiektów {...}
W JavaScript prawie wszystko jest przedmiotem.
Object.prototype.test = function() {
alert("test");
}
Wszystkie obiekty (w tym numer, String i Array) będzie miał tej metody. Ale chcę tego tylko dla obiektu struct. > {...} <
Najpierw można utworzyć wszystkie prototypy obiektu i usunąć je z innych, takich jak liczba, ciąg i macierz.
// Overwrite
Array.prototype.test = undefined; // or delete property
To "działa" ... Prototyp jest nadpisywany. Ale klucz nadal istnieje.
// Show all keys
for (key in arr)
{
alert(key); // print index of array AND keynames
}
Szukam najbardziej eleganckiego sposobu na zrobienie tego.
Nie zmodyfikować 'prototyp Object' chyba że masz zamiar za nieruchomość mają być dostępne na każdym obiekcie, którym stwierdził, że nie chcesz. Niezależnie od tego modyfikowanie prototypu 'Object' jest prawie zawsze złym pomysłem. Zamiast tego powinieneś umieścić właściwość na prototypie jakiejś klasy, którą kontrolujesz, i dziedziczyć ją w razie potrzeby. –
Usunięcie właściwości z prototypu 'Array' również nie spowoduje tego, co chcesz. Wywołanie 'testu' na tablicy nadal będzie działało, ponieważ przejdzie do łańcucha prototypów i proste wywołanie' testu' na prototypie 'Object': http://jsfiddle.net/x2wysox8/ –
nie usuwaj właściwości 'test' z' Array.prototype', wystarczy rzucić błąd na połączenie, jeśli chcesz ograniczyć dostęp do metody 'Object.prototype.test'. Ale dodawanie metod do 'Object.prototype' jest złą praktyką i pomyślcie dwa razy, zanim zrobicie to. –