时间:2021-05-25
昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来.
实现setTimeout传object对象
看以下代码实现向里面的function传参数
<scripttype="text/javascript">
var_st=window.setTimeout;
window.setTimeout=function(fRef,mDelay){
if(typeoffRef=='function'){
varargu=Array.prototype.slice.call(arguments,2);
varf=(function(){fRef.apply(null,argu);});
return_st(f,mDelay);
}
return_st(fRef,mDelay);
}
functiontest(x){
alert(x);
}
window.setTimeout(test,1000,'fason');
</script>
call方法JScript参考中的说明:调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj[,arg1[,arg2[,[,.argN]]]]]),但是没有示例
apply方法JScript参考中的说明:应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,argArray]])
实际上这两个的作用几乎是相同的,要注意的地方是call(thisObj[,arg1[,arg2[,)中的arg参数可以是变量,而apply([thisObj[,argArray]])中的参数为数组集合。
今早又看到一篇利用call实现继承的例子.呵呵..也一并贴出来.这个例子比较简单.就算是由浅入深吧
<scriptlanguage="javascript"type="text/javascript">
functionfather(){//父类
varself=this;//私有变量,子类里不会继承!
varvar_private="privatevariable";//私有变量
this.var_public="publicvariable";//公有变量
this.author="xling";
this.test=function(msg){//公有方法
alert("该方法位于父类:"+msg+"\n"+self.author);
}
vartest2=function(){//私有方法,子类不能调用
alert("这个方法是父类的私有方法");
}
}
functionfather2(){
this.email="xlingFairy#hotmail.com";
}
functionsuber(){//子类
father.call(this);//通过这一句来继承父类(father)类的可见变量及方法(this)
}
functionsun(){
suber.call(this);
father2.call(this);//和上面的一句放在一起,實現多重繼承!爽啊!
}
varmySuber=newsuber();
mySuber.test("参数是从子类的实例里传入的");
//mySuber.test2();//这一句会发生错误码,因为test2是父类的私有类
alert("父类的私有变量,子类不能读取:"+mySuber.var_private);
alert("父类的公有变量,子类可以读取"+mySuber.var_public);
varmySun=newsun();
mySun.test("这个是从孙子级的实例里传入的参数");
alert("父类的私有变量,子类不能读取:"+mySun.var_private);
alert("父类的公有变量,子类可以读取"+mySun.var_public);
alert(mySun.email);
</script>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
继承 继承是面向对象语言的必备特征,即一个类能够重用另一个类的方法和属性。在JavaScript中继承方式的实现方式主要有以下五种:对象冒充、call()、a
继承是我们在实现面向对象编程的时候很重要的一个手段。虽然我们讲不能过度继承,多利用组合代替继承,但是继承总是免不了的。这里要讨论的就是Javascript中的继
非ES6代码实现继承的主流方式主要可以分为:构造继承、原型链继承、构造继承+原型链继承组合继承、以及在组合继承上衍生出的继承方式。构造继承(借助call实现)实
前言AngularJS中scope之间的继承关系使用JavaScript的原型继承方式实现。本文结合AngularJSScope的实现以及相关资料谈谈原型继承机
1、prototype在JavaScript中并没有类的概念,但JavaScript中的确可以实现重载,多态,继承。这些实现其实方法都可以用JavaScript