Articles

JavaScript: Co To jest obiekt.create()?

Inne sprytne zastosowania obiektu.tworzenie ()

obiekt.funkcja create może przyjąć drugi argument

obiektu.create() może być użyte do wykorzystania niektórych z wielu dziwactw JavaScript. Po pierwsze, może przyjąć drugi argument jako obiekt, który ma właściwości, które chcesz uwzględnić w nowo zwracanym obiekcie. Nie tylko to, ale możesz przekazać jako pierwszy argument, mówiąc, że nie ma prototypu na zwracanym obiekcie. Może to wydawać się stosunkowo bezużyteczne, a większość przypadków użycia prawdopodobnie jest, ale co, jeśli chcesz obiekt, który nie miał prototypu? Na przykład, powiedzmy, że potrzebujesz statycznego obiektu, którego właściwości nigdy nie powinny być zmieniane, przez Ciebie lub kogokolwiek innego? Literały obiektów, utworzone za pomocą basic {}, mają mnóstwo wbudowanych właściwości-w tym te, które sprawiają, że są konfigurowalne; podczas gdy obiekty utworzone za pomocą Object.create() will only have properties that you explicitly assign.

The regular instantiation of a JS object has all kinds of properties built-in, inherited from the Object.prototype

With Object.create, możemy zdefiniować dokładnie jakie właściwości istnieją, w tym prototyp

więc teraz, jeśli chcemy, możemy stworzyć obiekt, który nie ma połączenia z obiektem.prototyp.

ponieważ jednak nasz nowy obiekt nie ma połączenia z prototypem, nie posiada również właściwości enumerable, writeable, ani konfigurowalnych. Co oznacza, że możemy dodawać do tego obiektu tyle, ile chcemy, ale nie możemy niczego zmienić ani usunąć.

mimo że właśnie zmieniliśmy myProp, pozostaje on na 42.

nawet zwracamy „false”, gdy używamy słowa kluczowego delete

w większości przypadków nie jest to to, czego chcesz. Ale z pewnością istnieje kilka skrajnych przypadków, w których statyczny, niezmienny obiekt jest dokładnie tym, czego potrzebujesz! Jeśli pracujesz w zespole i masz obiekt w kodzie, który zdecydowanie nigdy nie musi mieć usuniętych/zmienionych właściwości-Object.funkcja create() może być dokładnie tym, czego szukasz.

więc obiekt.create() jest bardzo użyteczna, jeśli chodzi o Klasyczne dziedziczenie, ale daje też programiście całkowitą kontrolę nad tworzonym obiektem — co może być całkiem przyjemne.