zoukankan      html  css  js  c++  java
  • JavaScript模拟call和apply的实现

      参考: call和apply的模拟实现

      1. call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。

    /*call()方法*/
    function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

       2.1 . 举例一说明:

    var foo = {
        value: 1
    };
    function bar() {
        console.log(this.value);
    }
    bar.call(foo); // 1

      备注: 1. bar函数执行了; 2. bar函数中的this指向了foo。

      2.2 对举例一进行改造:

    var foo = {
        value: 1,
        bar:function () {
            console.log(this.value);
        }
    };
    foo.bar(); // 1

      对于改造的对象,给对象添加了一个属性,这个属性是一个方法,方法指向bar

      总结: 所以我们模拟的步骤可以分为:

    1. 将函数设为对象的属性
    
    2. 执行该函数
    
    3. 删除该函数

      按照举例一,模拟步骤:

    // 第一步
    foo.fn = bar
    // 第二步
    foo.fn()
    // 第三步
    delete foo.fn

      

  • 相关阅读:
    socket
    netstat
    列表
    突然发现不会写代码了
    算法资源
    bit位操作
    排序算法
    连续子数组最大和
    books
    凸优化
  • 原文地址:https://www.cnblogs.com/yyy6/p/9556084.html
Copyright © 2011-2022 走看看