setTimeout在类中使用的问题!
我现在的做法,但我不想这样写:
function calendar(name){
this._name = name;
}
calendar.prototype.thread=function(){
this._timeout = setTimeout(this._name + ".thread_result()", 200);
}
calendar.prototype.thread_result=function(){
alert("执行成功!");
}
var calendar1;
onload=function(){
calendar1 = new calendar("calendar1");
calendar1.thread();
}
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
我希望能做到创建calendar时,不需要把calendar1传入,在setTimeout参数里,直接可以通过this.thread_result()执行
function calendar(){
}
calendar.prototype.thread=function(){
this._timeout = setTimeout("this.thread_result()", 200);
}
calendar.prototype.thread_result=function(){
alert("执行成功!");
}
onload=function(){
var calendar1 = new calendar();
calendar1.thread();
}
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
幻宇前辈不在 我先来现一把拙:)
function calendar(){
this.str="执行成功";
}
calendar.prototype.thread=function(){
var temp=this;
this._timeout = setTimeout(function(){temp.thread_result()}, 200);
}
calendar.prototype.thread_result=function(){
alert(this.str);
}
onload=function(){
var calendar1 = new calendar();
calendar1.thread();
}
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
这个问题难就难在让函数中的this指向正确
对,winter老弟的方法不错,唯一的问题是函数中的this指针有问题,我已经找到解决方法了,给Function对象添加了原型函数bindNode进行绑定,可以让this指向任意对象
Run
Function.prototype.bindNode=function(oNode){
var foo=this,iNodeItem
if(window.__bindNodes==null)
__bindNodes=[]
__bindNodes.push(oNode)
iNodeItem=__bindNodes.length-1
oNode=null
return function(e){
foo.call(__bindNodes[iNodeItem],e||event)
}
}
btTest.onclick=function(){
alert(this.tagName==null?"tagName="+this.tagName+"(普通情况下,this指向当前函数)":"tagName="+this.tagName+"(经过bindNode处理后,this可以指向任意传过来的对象)")
}
window.setTimeout(btTest.onclick,100)
window.setTimeout(btTest.onclick.bindNode(btTest),200)
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
To 幻宇:
我一楼帖的this也是正确的 只不过代码难看了点:)
添加f1添加f2添加f3
移除f1移除f2移除f3
function FunctionArray()
{
var functions=new Array();
var FA=function (){
for(var i=0;i
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
关于绑定事件的问题 我的做法是自己写一个函数数组
我自己感觉这样更加原生态一些 请指点一下^^