JavaScrip的call()方法和apply()方法使用
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数必须是一个对象,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
例如: B.方法名.call(A,var1,var2,var3)对应的apply写法为:B.方法名.apply(A,[var1,var2,var3])
含义:A对象调用B对象的某个方法,A对象可以没有定义B对象要调用的那个方法。
样例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>DojoSample1</title> <script type="text/javascript" src="dojo.js"></script> <script language="javascript"> function Dog(sound){ this.sound = sound; } Dog.prototype.talk = function (name){ alert("this.soung返回值是:"+this.sound+"; 我的名字是:"+name); } function Cat(sound){ this.sound = sound; } Cat.prototype.talk = function (name){ alert("this.soung返回值是:"+this.sound+"; 我的名字是:"+name); } var dog = new Dog("狗"); dog.talk("小狗狗"); //this.soung返回值是:狗; 我的名字是:小狗狗 var cat = new Cat("猫"); cat.talk("小猫猫"); //this.soung返回值是:猫; 我的名字是:小猫猫 cat.talk.call(dog,"狗使用猫的方法");//this.soung返回值是:狗; 我的名字是:狗使用猫的方法 dog.talk.call(cat,"猫使用狗的方法");//this.soung返回值是:猫; 我的名字是:猫使用狗的方法 </script> </head> <body> </body> </html>
本文出自 “IT技术学习与交流” 博客,谢绝转载!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。