Object. create()
Tworzy nowy obiekt z podanym prototypem.
- Zwraca
- Nowy obiekt.
- Zmienia oryginał
- Nie
Przykład
#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)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
#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
#const dictionary = Object.create(null)
dictionary.toString = 'to tylko klucz'
console.log(dictionary.toString)
console.log('hasOwnProperty' in dictionary)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
#- classDefiniuje klasę, czyli szablon do tworzenia obiektów z tymi samymi polami i metodami.
- thisSłowo kluczowe wskazujące obiekt, w kontekście którego wywołano funkcję.
- Object.hasOwn()Sprawdza, czy obiekt ma własną właściwość o podanej nazwie.
- MapKolekcja par klucz i wartość, w której kluczem może być dowolna wartość, a kolejność dodawania jest zachowana.
Widzisz błąd albo brakuje przykładu? Napisz do nas.