【发布时间】:2010-09-22 17:29:55
【问题描述】:
如果我有一个对象,我想从“超级对象”“继承”方法以确保一致性。它们将是混合变量。 修订
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() 方法,而父母则负责管理启动、停止、日志记录和其他任何事情。
【问题讨论】:
标签: javascript inheritance prototype