zoukankan      html  css  js  c++  java
  • call()函数、apply()函数区别与意义

    使用apply函数或call函数的意义:

      在面对对象编程过程中,当A对象调用其他对象而非A对象方法是,该方法中所有的this引用都指向此方法所在的对象,而不是当前代码的上下文即A对象,

    为了保持this的原来的指向(即A对象),则需要使用apply或call函数。

    apply()和call()的区别:

    apply和call,它们的作用都是将函数绑定到另外一个对象上去运行

    原型分别是

    Function.prototype.apply(thisArg,argArray);
    Function.prototype.call(thisArg,[arg1],[arg2…]]); 

    从中可以看出,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,使得另外一个对象实例传入函数。

    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

    而区别就在于第二个参数,apply()函数使用数组形式传入数值,call()函数以自由形式直接传入多个数值。

    示例:

    function Accomodation(){

      this.isAlarmed=false;

    }

    var AlarmSystem={

      arm:function(message){

      this.isAlarmed=true;

    alert(message);

      },
    disarm:function(message){
    this.isAlarmed=false;
    alert(message);
    }

    };

    var myHouse = new Accomodation();

    AlarmSystem.arm.call(myHouse,"Alarm activated");

    alert(myHouse.isAlarmed);      //true      arm()函数中的this值通过call()指向myHouse对象,使myHouse对象的属性发生改变

    AlarmSystem.disarm.apply(myHouse,["Alarm activated"]);

    alert(myHouse.isAlarmed);     //flase       arm()函数中的this值通过call()指向myHouse对象,使myHouse对象的属性发生改变

  • 相关阅读:
    机电传动控制第五周作业
    机电传动控制第四周作业
    机电传动控制 第三周作业
    机电传动控制第二周作业
    机电传动控制 第一周作业
    第一小组咖啡机器人最终结果
    第一组咖啡机器人界面设计1月6日进展
    第一组咖啡机器人界面设计一阶段进展
    实时软件控制第二次作业
    git的学习以及使用
  • 原文地址:https://www.cnblogs.com/Bideam/p/5582526.html
Copyright © 2011-2022 走看看