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) |