setTimeout 延时调用

var cainiao= {
   name:'小马',
   gender : '男',
   showInfo : function(){
var str = '姓名:' +  this.name ;
    str+=  ',性别:' + this.gender;
   alert(str);
}
}
cainiao.showInfo();

如果要写一个方法,来实现showInfo的延时调用

var cainiao= {
   name:'小马',
   gender : '男',
   showInfo : function(){
var str = '姓名:' +  this.name ;
    str+=  ',性别:' + this.gender;
    alert(str);
   },
   delayInfo: function(){
      // setTimeout('alert(this.cainiao.name)',1000);//正确
    setTimeout('this.cainiao.showInfo()',1000);// 正确
//setTimeout('this.showInfo()',1000);//  错误
  }  
}
cainiao.delayInfo();
//上面是对象实例


//下面是构造函数
window.objTimeoutFuncs  = [];
window.objTimeoutIds =  [];
function  objTimeout(obj,func,time,id){
window.objTimeoutFuncs[id] = function(){
  func.call(obj);
};
window.objTimeoutIds[id] =  setTimeout('objTimeoutFuncs[\''+ id +'\']()',time);
}
function  clearObjTimeout(id){
clearTimeout(window.objTimeoutIds[id]);
}
function  Person(name_,gender_){
this.name = name_;
this.gender = gender_;
this.showInfo = function(){
  var str = '姓名:' +  this.name ;
  str+=  ',性别:' + this.gender;
  alert(str );
};
this.delayInfo = function(){
objTimeout(this,this.showInfo,2000,this.name);//
  //setTimeout("this.showInfo()",1000);//出错
  //setTimeout.call(this,'this.showInfo()',1000);//出错
};
}
var p1=new Person("小马","男");
p1.delayInfo();

原文地址:https://www.cnblogs.com/oneroom/p/settimeoutDelayCall.html