利用javascript中的call实现继承_Javascript教程-查字典教程网
利用javascript中的call实现继承
利用javascript中的call实现继承
发布时间:2016-12-30 来源:查字典编辑
摘要:昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来.实现setTimeout传...

昨天阿丹传了一个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>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类