Если вы не находите свой путь изящным, возможно, есть способ создать некоторые функции, чтобы сделать процесс более удобным.Но вернемся к теме ...
Да, Javascript имеет встроенное делегирование , то есть наследование, через прототипы .
Учитывая объект-прототип:
var proto = {
f: function(){ console.log(this.x); }
}
Мы можем создать новый объект, который наследуется от него:
var obj = Object.create(proto);
obj.x = 42;
obj.f(); //should work!
for(var i in obj) console.log(i);
//should print x, f and some other stuff perhaps
Просто обратите внимание, что выполнение действий напрямую через Object.create не всегда поддерживается (старые браузеры и т. Д.),Старый (и некоторые могут сказать, нормальный ) способ сделать что-то - это с помощью прикольного оператора new (не думайте слишком много об имени - его путаница с целью отвлечьJava люди)
function Constructor(arg){
this.x = arg;
}
Constructor.prototype = {
f: function(){ ... }
};
var obj = new Constructor(17);
obj.f();
Важным отличием, которое следует учитывать при использовании прототипов наследования, является отсутствие закрытых переменных. Только наследуемые переменные могут быть унаследованы! Из-за этого распространенным соглашением является использование подчеркивания в качестве префикса для закрытых и защищенных переменных.