zoukankan      html  css  js  c++  java
  • JacvaScript中的call()方法和apply()方法

    每个函数都包含两个非继承而来的方法:call()方法和apply()方法。

    相同点:这两个方法的作用是一样的。

    等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。

    一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。

    例子:

     //默认this为window作用域为window
           var name= "小王",age = 17;
           var obj = {
                   name:'小张',
                   objFunc:function(fm,t){
                       console.log(this.name+"年龄"+this.age+"城市1"+fm+"城市2"+t);
                   }
           }
           var db = {
               name:'德玛',
               age:99
           }
           //普通调用
           obj.objFunc();
           //作用域变为window
           obj.objFunc.call(window);
           //扩大作用域
           obj.objFunc.call(db,'广州','湛江');//参数是直接放进去的,
           obj.objFunc.apply(db,['广州','湛江']);//参数都必须放在一个数组里面传进去
           //bind 返回的是一个新的函数,你必须调用它才会被执行。
           obj.objFunc.bind(db,['广州','湛江'])();//参数不限定是 string 类型,允许是各种类型,包括函数 、 object 等等!

    结果:

  • 相关阅读:
    0593. Valid Square (M)
    0832. Flipping an Image (E)
    1026. Maximum Difference Between Node and Ancestor (M)
    0563. Binary Tree Tilt (E)
    0445. Add Two Numbers II (M)
    1283. Find the Smallest Divisor Given a Threshold (M)
    C Primer Plus note9
    C Primer Plus note8
    C Primer Plus note7
    C Primer Plus note6
  • 原文地址:https://www.cnblogs.com/webcyh/p/11278523.html
Copyright © 2011-2022 走看看