Ho familiarità con il linguaggio OOP fortemente tipizzato come C# e Java, quindi sono un po 'confuso con Javascript. Voglio che il mio class
essere incapsulati, ad esempio:Dichiarare getter/setter nella classe di eredità in Javascript
function Human() {
var _name = '';
var _nameChangeCounter = 0;
}
Human.constructor = Human;
Human.prototype = Object.create(Animal);
Come si può vedere, Human
estende la classe Animal
. Ora ho bisogno di un getter and setter per Name
e un getter per NameChangeCounter
. Nel setter di Name
, dovrebbe aumentare lo NameChangeCounter
. Ho guardato come fare getter e setter in javascript nel 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];
}
};
Tuttavia, ora che il prototipo è preso in eredità, come posso farlo? Devo fare lo stile Java (creare le funzioni getName
, setName
, getNameChangeCounter
)? Come vengono implementate proprietà come window.location.href
?
* window * è un oggetto host, è configurato ma un'implementazione desidera configurarlo. Non è necessariamente (o anche probabile) l'installazione usando un costruttore. È simile agli oggetti built-in come * Math * o * Date * che just * are *. – RobG
Si può avere uno sguardo alla [documentazione di Mozilla JS sulle classi e l'ereditarietà] (https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Contributor_s_Guide/Classes_and_Inheritance) e al libro libero [ Eloquent JavaScript] (http://eloquentjavascript.net/). Li ho trovati molto istruttivi e utili. – pasty
Non scherzare DOM con JS ... sono cose diverse ... DOM ha un sacco di "codice nativo". – rafaelcastrocouto