Если у меня есть объект, который я хочу «наследовать» от «суперобъекта», чтобы обеспечить согласованность. Они будут смешанными переменными. REVISED
ParentObj = function()
{
var self = this;
this.interval = null
this.name = "";
this.timeout = 1000;
this.stop = function()
{
clearInterval(self.interval);
};
this.start = function()
{
self.log("Starting up");
setTimeout(function(){
self.getData(true);
self.interval = setInterval(function(){
self.getData();
}, self.timeout)
}, 1000);
};
this.log = function(msg)
{
require("sys").log(self.name + ": " + msg);
};
this.getData = function(override)
{
if(override || self.interval)
{
/**
* Allow
*/
self.log(new Date());
}
else
{
self.log("Unable to override and no interval");
}
}
}
ChildObj = function()
{
var self = this;
this.name = "Child";
this.timeout = 500;
this.start();
setTimeout(function(){
self.stop();
}, 2000);
}
ChildObj.prototype = new ParentObj();
var c = new ChildObj();
Похоже, это не работает правильно, в частности, он не видит self.interval
и не может его очистить.
Я открыт для других методов наследования JavaScript, если они существуют, но мне действительно нужно начать инкапсуляцию содержимого в родительский. Есть три или четыре функции, которые идентичны, но время от времени меняются, и это означает, что мне нужно выполнить дюжину файлов, чтобы внести изменения, а не просто изменить родительский элемент.
Прорабатывая некоторые предложения, я попытался более четко определить, какую функциональность я собираюсь использовать. В идеале все «дети» должны иметь пару уникальных настроек (имя, интервал, настройки конфигурации) и метод getData()
, в то время как родительский элемент управляет запуском, остановкой, ведением журнала и всем остальным.