call、apply、bind原理(附实现源码)

224 阅读1分钟
Function.prototype.call1 = function(context) {
    context = context ? Object(context) : window
    console.log(context)
    context.fn = this
    
    let arr = []
    for(let i=1;i<arguments.length;i++) {
        arr.push('arguments[' + i +    ']')
    }

    let result = eval('context.fn(' + arr +')')
    console.log(this)
    
    delete context.fn

    return result
}

function fn1() {
    console.log(this.value)
}
fn2 = {
    value: 2
}
fn1.call1('hhh')

欢迎访问小程序:女友睡前故事~