function test() {
this.alerting = function () {
alert("test");
};
this.something = function () {
setInterval(function () {
this.alerting();
}, 1000);
};
}
var a = new test();
a.something();
调用函数something()
应该每秒调用函数alerting()
。这应该每秒警告'test'
。为什么不这样,我怎么能实现呢?请注意,如果可能的话,我想保留这种在方法中调用方法的设计。
答案 0 :(得分:2)
function test() {
this.alerting = function () {
alert("test");
};
this.something = function () {
setInterval(this.alerting, 1000);
};
}
var a = new test();
a.something();
答案 1 :(得分:2)
将this
的引用存储在变量中,并将其用于在当前上下文之外运行的方法(就像setInterval
那样)
function test() {
var that = this;
this.alerting = function () {
alert("test");
};
this.something = function () {
setInterval(function () {
that.alerting();
}, 1000);
};
}
var a = new test();
a.something();
答案 2 :(得分:0)
希望这有帮助!这里的计时器以ms为单位。
function something(){
window.setInterval(alerting, 1000);
}
function alerting() {
alert('test');
}
答案 3 :(得分:0)
另一种方法是返回一个对象。
function test() {
var self = {
alerting : function () {
console.log("test");
},
something : function () {
setInterval(function () {
self.alerting();
}, 1000);
}
};
return self;
}
var a = new test();
a.something();
答案 4 :(得分:0)
您可以使用函数创建一个对象,然后在不实例化的情况下调用它们。
var testCaller = {
alerting: function() {
alert("test")
},
something: function() {
// Store current scope
var self = this;
setInterval(function() {
self.alerting();
}, 1000);
}
}
testCaller.something();
答案 5 :(得分:0)
您可以尝试使用此代码。我测试了它,它的工作原理。在你的代码中,"这个"指针指向其他地方。
function test() {
test.prototype.alerting = function() {
alert("alert test");
};
test.prototype.something = function () {
setInterval(this.alerting, 1000);
};
}
var a = new test();
a.something();