Object.prototype

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)

Zobacz też

Autorzy i etykiety dokumentu

 Autorzy tej strony: rwa_kulszowa, dianafa, teoli, Mgjbot, Ptak82, Marcoos
 Ostatnia aktualizacja: rwa_kulszowa,