JavaScriptObiekty i klasy

Object.create()

Tworzy nowy obiekt z podanym prototypem.

Zwraca
Nowy obiekt.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const hero = {
  greet() {
    return `Cześć, jestem ${this.name}`
  }
}

const mohamed = Object.create(hero)
mohamed.name = 'Mohamed'

console.log(mohamed.greet())
console.log(Object.keys(mohamed))
console.log(Object.getPrototypeOf(mohamed) === hero)
Konsola
Cześć, jestem Mohamed
['name']
true

Definicja i zastosowanie

#

Metoda Object.create(proto) tworzy pusty obiekt, którego prototypem jest podany obiekt. Nowy obiekt dziedziczy wszystkie jego właściwości i metody, choć sam ich nie zawiera.

To podstawowy mechanizm dziedziczenia w JavaScripcie, na którym opierają się też klasy. W codziennym kodzie częściej używa się składni class, ale Object.create() pomaga zrozumieć, jak działa łańcuch prototypów.

Wywołanie Object.create(null) tworzy obiekt bez żadnego prototypu. Taki „czysty słownik” nie ma odziedziczonych kluczy jak toString, co bywa przydatne przy przechowywaniu dowolnych danych.

Składnia

#
Składnia
Object.create(proto)
Object.create(proto, propertiesObject)

Parametry

#
  • proto

    obiekt lub null

    Prototyp nowego obiektu.
  • propertiesObject

    opcjonalny

    Opisy właściwości do zdefiniowania od razu.

Więcej przykładów

#
Obiekt bez prototypu
JavaScript
const dictionary = Object.create(null)
dictionary.toString = 'to tylko klucz'

console.log(dictionary.toString)
console.log('hasOwnProperty' in dictionary)
Konsola
to tylko klucz
false

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • W nowym kodzie do dziedziczenia zwykle wygodniejsza jest składnia class.
  • Do słowników z dowolnymi kluczami często lepsza jest Map.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.