Właśnie dostałem Javascript: The Good Parts Douglasa Crockforda i mam pewne trudności ze zrozumieniem jednego z jego przykładów dotyczących prototypów. Kod w książce brzmi:zamieszanie dotyczące wykonywania javascript
if (typeof Object.create !== "function") {
Object.create = function(o) {
var F = function() {}
F.prototype = o;
return new F;
};
}
Zakładam, że ten kod jest używany do kierowania na prototyp funkcji. Ale po co używać tak złożonego podejścia? Dlaczego nie po prostu użyć variable
.prototypu? Crockford jest wiodącym ekspertem w dziedzinie Javascript, więc jestem pewien, że istnieje dobry powód do korzystania z tego modelu. Czy ktoś może mi pomóc lepiej to zrozumieć? Każda pomoc będzie doceniona.
@ CMS - ale w tym przypadku "Object.create" jest ustawione na pustą funkcję. Więc tutaj nie ma dziedzictwa ... prawda? Ponadto, ponieważ 'Object.create' jest metodą konstruktora' Object', ustawienie go na wartość pustej funkcji byłoby poprawne? – dopatraman
@codeninja, Nie rozumiem dlaczego mówisz 'Object.create' jest * ustaw * na * pustą * funkcję, może ze względu na ostatnią linię (' return new F; ') ??? Ta ostatnia linia po prostu zwraca nowy obiekt wywołujący konstruktor 'F' (obiekt, który dziedziczy po' F.prototype'), może wyglądać nieznośnie, ponieważ na końcu brakuje nawiasów, ale są one opcjonalne, gdy używasz 'nowego 'operator (' nowy F(); 'jest równoważny' nowemu F; ') ... – CMS
@ CMS - Kod odczytuje' Object.create = var F', który jest ustawiony '=' na 'function() { } '. czy to nie znaczy, że w pewnym sensie jest ustawiony na pustą funkcję? – dopatraman