温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Call和apply怎么用

发布时间:2021-11-23 09:35:00 来源:亿速云 阅读:134 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关Call和apply怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

     . 每一个函数都包含两个非继承而来的函数: call,apply.  在特定的作用域中调用函数,  实际上相当于   函数体内this对象的值

     .call,apply  用途之一就是传递参数.    实际上强大的地方是  :   扩大函数的作用域   

eg1:   ( 传递参数 )

     //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          function sum(x,y){

               return x+y;

          }

          function call1(n1,n2){

               return sum . call ( this,n1,n2 );          //~~~  return sum.apply(this , [ n1, n2 ] );

          }

          alert(call1(10,20));      //alert(30);

     //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

eg2:  (扩充作用域)    好处:  对象和方法 没有 耦合关系 

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  window.color =  ' red ';

  var obj  =  { color : ' blue'};

   function showColor()  {

          alert( this.color );

   }

   showColor.call( window );    // showColor.call(this);   // red

   showColor.call( obj );  //blue

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     //自定义对象

     function Obj ( x , y){

          this.x = x;

          this.y = y;

           return x*y ;

     }

     // 方法 

     function  fun( a , b ){

          return a + b;

     }

     var obj = new Obj (10 , 20);

     alert( fun . call ( obj , obj.x , obj.y );    // 30 

 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

举几个具体例子:

例子1:

function add(a,b) 

    alert(a+b); 

function sub(a,b) 

    alert(a-b); 

//add.call(sub,3,1);

add.apply(sub,[3,1]);   

例子2:

function Class1() 

    this.name = "class1"; 

    this.showNam = function() 

    { 

        alert(this.name); 

    } 

function Class2() 

    this.name = "class2"; 

var c1 = new Class1(); 

var c2 = new Class2(); 

//c1.showNam.call(c2);   //class2

c1.showNam.apply(c2);

例子3:

   var func=new function(){this.a="func"};

//    var func = { a:"func"};

    var myfunc=function(x){

        var a="myfunc";

        alert(this.a);

        alert(x);

    };

   // myfunc.apply(func,"var");

    myfunc.apply(func,["var"]);  

例子4:[吊炸天有木有~call 可以用来实现继承]

function Class1() 

    this.showTxt = function(txt) 
    { 
        alert(txt); 
    } 

function Class2() 

    Class1.call(this); 

var c2 = new Class2(); 
c2.showTxt("cc"); 

例子5:多继承[javaScript 如何来模拟面向对象的继承,还可以实现多重继承]

function Class10() 

    this.showSub = function(a,b) 

    { 

        alert(a-b); 

    } 

function Class11() 

    this.showAdd = function(a,b) 

    { 

        alert(a+b); 

    } 

function Class2() 

    Class10.call(this); 

    Class11.call(this); 

var c2 = new Class2();

c2.showAdd(1,4);  //5

c2.showSub(10,6);//4

关于“Call和apply怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI