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技术学习与交流” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。