Jestem zaznajomiony z mocno napisanym językiem OOP, takim jak C# i Java, więc jestem trochę zdezorientowany przez JavaScript. Chcę, aby mój class
być obudowane, na przykład:Zadeklaruj getter/setter w klasie dziedziczenia w JavaScript
function Human() {
var _name = '';
var _nameChangeCounter = 0;
}
Human.constructor = Human;
Human.prototype = Object.create(Animal);
Jak widać, Human
rozszerza klasę Animal
. Teraz potrzebuję programu pobierającego i ustawiającego dla Name
i gettera dla NameChangeCounter
. W ustawieniu Name
powinien on zwiększyć wartość NameChangeCounter
. Spojrzałem w górę, jak zrobić getter i setter w JavaScript w this question:
Name.prototype = {
get fullName() {
return this.first + " " + this.last;
},
set fullName(name) {
var names = name.split(" ");
this.first = names[0];
this.last = names[1];
}
};
Teraz jednak, że prototyp jest brane do dziedziczenia, w jaki sposób mogę to zrobić? Czy muszę wykonać Java-style (utworzyć funkcje getName
, setName
, getNameChangeCounter
)? W jaki sposób zaimplementowano właściwości takie jak: window.location.href
?
* okno * to obiekt hosta, ale jest skonfigurowany, ale implementacja chce go skonfigurować. To niekoniecznie (lub prawdopodobnie) konfiguracja przy użyciu konstruktora. Jest podobny do wbudowanych obiektów, takich jak * Math * lub * Date *, które po prostu * są *. – RobG
Możesz zajrzeć do [Dokumentacja JS Mozilli o klasach i dziedziczeniu] (https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Contributor_s_Guide/Classes_and_Inheritance) oraz w bezpłatnej książce [ Eloquent JavaScript] (http://eloquentjavascript.net/). Okazało się, że są bardzo pouczające i pomocne. – pasty
Nie zadzieraj DOM z JS ... są różne rzeczy ... DOM ma wiele "natywnego kodu". – rafaelcastrocouto