封装一个bind

2019-03-12  本文已影响0人  广告位招租

首先看一下bind的正常使用

let obj = {
     name: 'zhangsan'
}
let func = function() {
    console.log(this.name)
}.bind(obj) // 扩展作用域
func()

页面输出


image.png

bind不同于call和apply,他不是立即执行的,只有当函数执行时,才会给该函数扩展作用域

针对以上特点

封装一个bind

Function.prototype._bind = function(more) {
    let _that = this // 保存一下this,this永远指向调用方,这里的this将会指向调用该方法的函数
    return function() {
        _that.call(more)
    }
}
let func = function() {
    console.log(this.name)
}._bind(obj)

func() // zhangsan
上一篇下一篇

猜你喜欢

热点阅读