zoukankan      html  css  js  c++  java
  • call 和 apply


    call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

    改变函数体内部 this 的指向

    //call用法
    function changeStyle(attr, value){
        this.style[attr] = value;
    }
    var box = document.getElementById('box');
    window.changeStyle.call(box, "height", "200px");
    //apply用法
    window.changeStyle.apply(box, ['height', '200px']);
    

    获取数组中的最大值和最小值

    var maxNum = Math.max("5, 458 , 120 , -215")//458
    //number 本身没有 max 方法,但是 Math 有
    var numbers = [5, 458 , 120 , -215 ]; 
    var maxNum = Math.max.call(Math,5, 458 , 120 , -215); //458,用call没什么意义因为参数不是数组可以直接用Math.max
    //获取数组中的最大值和最小值
    var maxNum = Math.max.apply(Math, numbers),   //458
    
    
    

    bind()改变上下文环境之后是回调执行 apply & call 则会立即执行函数

    var obj = {
        x: 81,
    };
    var foo = {
        getX: function() {
            return this.x;
        }
    }
    console.log(foo.getX.bind(obj)());  //81
    console.log(foo.getX.call(obj));    //81
    console.log(foo.getX.apply(obj));   //81
    

    2017/2/28

  • 相关阅读:
    整数反转问题--正确率极低
    May LeetCoding Challenge9 之 求方差
    May LeetCoding Challenge8 之 交叉相乘
    EXCEL上传DEMO
    三层BOM
    OO alv 获取选择列
    PS 项目创建
    读取EXCEL到内表
    SAP XML 到 内表
    BOM 复制功能
  • 原文地址:https://www.cnblogs.com/papi/p/6527201.html
Copyright © 2011-2022 走看看