zoukankan      html  css  js  c++  java
  • 手写apply()

    apply() 方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。
    语法:func.apply(thisArg, [argsArray])
    apply()和call()类似,区别在于call()接收参数列表,而apply()接收一个参数数组,所以我们在call()的实现上简单改一下入参形式即可

    Function.prototype.myApply = function(thisArg, args) {
        if(typeof this !== 'function') {
            throw new TypeError('error')
        }
        const fn = Symbol('fn')        // 声明一个独有的Symbol属性, 防止fn覆盖已有属性
        thisArg = thisArg || window    // 若没有传入this, 默认绑定window对象
        thisArg[fn] = this              // this指向调用call的对象,即我们要改变this指向的函数
        const result = thisArg[fn](...args)  // 执行当前函数
        delete thisArg[fn]              // 删除我们声明的fn属性
        return result                  // 返回函数执行结果
    }
    
    //测试
    foo.myApply(obj, [])     // 输出'写代码像蔡徐抻'
    

    本文转载自:https://juejin.im/post/5e8b261ae51d4546c0382ab4

  • 相关阅读:
    动态库的创建与使用
    静态库创建与链接
    tail命令使用
    hosts文件
    dns文件
    整数编码
    多线程之间同步
    多线程编程基础
    进程间通信——信号量
    进程间通信——管道
  • 原文地址:https://www.cnblogs.com/smart-girl/p/12656463.html
Copyright © 2011-2022 走看看