日期:2014-05-16 浏览次数:20390 次
var Person = function(name){ this.name = name; } Person.prototype = { say: function(){ alert(this.name) }, delay: function(t){ t = t || 0; } } var c = new Person(123); c.say().delay(1000)
var Person = function(name){ this.name = name; } Person.prototype = { say: function(){ alert(this.name) return this }, delay: function(t){ t = t || 0; alert(t) } } var c = new Person(123); c.say().delay(1000)
------解决方案--------------------
var objPerson = function(name){ this.name = name; } objPerson.prototype = { say: function(){ //立即say alert(this.name); }, say:function(delayTime){ //延时delayTime秒say, //如不重载就改名称 delaySay即可 var t = delayTime||0; var _this=this; setTimeout(function(){alert(_this.name);},t*1000); }, /* delay: function(t){ t = t || 0; } */ } var c = new objPerson('shenzhenNBA'); c.say(); //立即say c.say(3); //延时3秒say
------解决方案--------------------
7楼的代码已经可以了,如果楼主一定要保留一个delay函数的话可以这样写:
var Person = function(name){
this.name = name;
}
Person.prototype = {
say: function(){
alert(this.name)
},
delay: function(time,callBack){///callBack为延时时间到时会回调函数
setTimeOut(function(){callBack();},time) ; }
}
var c = new Person(123);
c.delay(1000,c.say)///这样将在1000毫秒后执行c.say,也可以传递其他函数来延迟执行
------解决方案--------------------
var Person = function(name){
this.name = name;
}
Person.prototype = {
delay: function(t){
this.t = t || 0;
return this;
},
say: function(){
var that = this;
window.setTimeout(function(){
window.setTimeout(function(){
alert(that.name)
},that.t)
},0);
return this;
}
};
var c = new Person(123);
c.say().delay(1000);
c.delay(1000);.say();
都可以
别的方法没有想到。。。
------解决方案--------------------
var Person = function (name) { this.name = name; } Person.prototype = { delay: function (t) { t = t || 0; if (this.h) { clearTimeout(this.h); this.h = null; this.say(this.w, t); } return this; }, say: function (word, t) { t = t || 100; this.w = word; var name = this.name; this.h = window.setTimeout(function () { alert(name + " say: " + word); }, t); return this; } }; var c = new Person(123); c.say("i love you").delay(2000);
------解决方案--------------------
(function(){ /** * @method proxy(Function fn, Object scope, Array args) * 创建代理函数,传入一个Function对象,返回该函数的代理函数,并可指定函数内的this 作用域,和函数被调用时的参数 * * <pre> * 1、fn - 被代理的函数 * 2、scope - 被代理函