To jest kod JavaScript wygenerowany przez słowo kluczowe CoffeeScript's extends
. Jak konfiguruje się łańcuch prototypów?Jak rozumieć kod JavaScript wygenerowany przez słowo kluczowe "extends" firmy CoffeeScript
var __hasProp = Object.prototype.hasOwnProperty,
__extends = function(child, parent) {
for (var key in parent) {
if (__hasProp.call(parent, key)) child[key] = parent[key];
}
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
child.prototype = new ctor;
child.__super__ = parent.prototype;
return child;
};
Która część daje Ci kłopoty? –
nie rozumiem tej linii: 'ctor.prototype = parent.prototype; ' – powerboy
Mój wpis na blogu zawiera szczegółowe informacje. 'ctor' nazywa się * zastępczym konstruktorem *. Jest to oddzielny konstruktor, do którego kopiujesz prototyp rodzica. Tworzy prototypowy łańcuch 'child.prototype = new ctor' bez konieczności wywoływania konstruktora nadrzędnego tylko po to, aby skonfigurować dziedziczenie. Bardziej znanym (ale problematycznym) sposobem ustawiania dziedziczenia jest wykonanie 'child.prototype = new parent'. Znowu mój wpis na blogu zawiera szczegółowe informacje na temat problemów związanych z tym –