Ten artykuł wymaga przeglądu technicznego. Dowiedz się jak możesz pomóc.
Object.prototype
reprezentuje prototyp obiektów klasy Object
.
Podsumowanie
Wszystkie obiekty w języku JavaScript wywodzą się od Object
; wszystkie obiekty dziedziczą metody i pola po Object.prototype,
chociaż mogą one zostać przeciążone (z wyjątkiem Object
'u o prototypie null
, tj. Object.create(null)
). Na przykład, prototypy innych konstruktorów przeciążają pole constructor
i zapewniają swoje własne wersje metod toString()
. Zmiany do prototypu Object
propagowane są do wszystkich obiektów, chyba że dane metody i pola zostały przeciążone w prototypie którejś z klas bazowych.
Własności
Object.prototype.constructor
- Określa konstruktor obiektu - funkcję, która tworzy prorotyp obiektu.
Object.prototype.__proto__
- Wskazuje na obiekt który był użyty jako prototyp, kiedy dany obiekt był inicjalizowany.
Object.prototype.__noSuchMethod__
- Pozwala zdefiniować funkcję, która będzie wykonana kiedy niezdefiniowany element obiektu zostanie wywołany jako metoda.
Object.prototype.__count__
Własność zwracała liczbę właściwości tzw. enumerable posiadanych przez zdefiniowany przez użytkownika obiekt. Własność ta została usunięta.Object.prototype.__parent__
Była używana do wskazywania kontwkstu obiektu.Własność ta została usunięta.
Metody
Object.prototype.__defineGetter__()
- Przypisuje funkcję do pola, do którego odwołanie wywoła tę funkcję, która zwróci odpowiednią wartość.
Object.prototype.__defineSetter__()
- Przypisuje funkcję do pola, którego ustawienie wywoła tę funkcję, która zmodyfikuje wartość pola.
Object.prototype.__lookupGetter__()
- Zwraca funkcję powiązaną z danym polem poprzez metodę
__defineGetter__
. Object.prototype.__lookupSetter__()
- Zwraca funkcję powiązaną z danym polem poprzez metodę
__defineSetter__
. Object.prototype.hasOwnProperty()
- Zwraca wartość boolean wskazującą czy obiekt posiada dane pole (wykluczając przypadki, gdy pole jest odziedziczone).
Object.prototype.isPrototypeOf()
- Zwraca wartość boolean wskazującą czy dany obiekt znajduje się w łańcuchu prototypów obiektu podanego jako parametr funkcji.
Object.prototype.propertyIsEnumerable()
- Zwraca wartość boolean wskazującą czy ustawiony jest atrybut ECMAScript DontEnum attribute.
Object.prototype.toSource()
- Zwraca literał obiektowy reprezentujący dany obiekt; można go użyć do utworzenia nowego obiektu.
Object.prototype.toLocaleString()
- Wywołuje
toString()
. Object.prototype.toString()
- Zwraca łańcuch znaków reprezentujący dany obiekt.
Object.prototype.unwatch()
- Usuwa funkcję monitorującą daną własność obiektu.
Object.prototype.valueOf()
- Zwraca wartość prostą danego obiektu.
Object.prototype.watch()
- Dodaje funkcję monitorującą daną własność obiektu.
Object.prototype.eval()
Wykonuje kod JavaScriptu zawarty w łańcuchu znaków w kontekście danego obiektu.
Przykłady
Jako, iż JavaScript nie posiada typowego rozróżnienia na klasę bazową i dziedziczącą, prototype jest przydatnym obejściem pozwalającym na utworzenie “klasy bazowej” z pewnych funkcji, które działają jak obiekty. Na przykład:
var Osoba = function() { this.umieMowic = true; }; Osoba.prototype.powitaj = function() { if (this.umieMowic) { console.log('Hej, jestem ' + this.imie); } }; var Pracownik = function(imie, tytul) { Osoba.call(this); this.imie = imie; this.tytul = tytul; }; Pracownik.prototype = Object.create(Osoba.prototype); Pracownik.prototype.constructor = Pracownik; Pracownik.prototype.powitaj = function() { if (this.umieMowic) { console.log('Hej, jestem ' + this.imie + ', ' + this.tytul); } }; var Klient = function(imie) { Osoba.call(this); this.imie = imie; }; Klient.prototype = Object.create(Osoba.prototype); Klient.prototype.constructor = Klient; var Mim = function(imie) { Osoba.call(this); this.imie = imie; this.umieMowic = false; }; Mim.prototype = Object.create(Osoba.prototype); Mim.prototype.constructor = Mim; var bob = new Pracownik('Bob', 'Builder'); var joe = new Klient('Joe'); var rg = new Pracownik('Red Green', 'Handyman'); var mike = new Klient('Mike'); var mim = new Mim('Mim'); bob.powitaj(); // Hej, jestem Bob, Builder joe.powitaj(); // Hej, jestem Joe rg.powitaj(); // Hej, jestem Red Green, Handyman mike.powitaj(); // Hej, jestem Mike mim.powitaj();
Specyfikacje
Specyfikacja | Status | Komentarz |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Początkowa definicja. Zaimplementowano w JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) The definition of 'Object.prototype' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.prototype' in that specification. |
Standard |
Kompatybilność
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |