Czy istnieje implementacja klasowego dziedziczenia dla JavaScript, która współpracuje z kompilatorem Closure? ADVANCED_OPTIMIZATIONS
?
To wygląda jak Implementacja Johna Resiga nie.
Odpowiedzi:
0 dla odpowiedzi № 1Jest to jedno z najprostszych i dość powszechnych podejść do konfigurowania dziedziczenia:
function Parent() {}
function Child() {}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
i działa dobrze z kompilatorem zamknięcia. Nie jestem pewien czy Object.create
jest poprawnie rozpoznawany, ale spójrz na implementację goog.inherits
z biblioteki zamknięcia, która w zasadzie robi to samo.
0 dla odpowiedzi nr 2
Kompilator obecnie rozpoznaje tylko „goog.inherits” i bezpośrednie przypisania do prototypów:
Child.prototype = new Parent();
Obiekt.tworzenie metafory jest oczywistym dodatkiem, ale jeszcze tego nie zrobiono. Aby cokolwiek innego zostało rozpoznane, należy albo zdefiniować nową klasę konwencji kodowania (czyli w jaki sposób goog.inherits jest rozpoznawany podczas sprawdzania typu), albo zmianę w kompilatorze (ponieważ może być wymagane dla Object.create).
Jeśli potrzebujesz wsparcia dla Object.create, zechcesz zgłosić problem tutaj:
https://code.google.com/p/closure-compiler/issues/list