js中apply/call/bind

apply/call/bind

  • 使用apply/call/bind改变 this 指向的

实现过程

apply
var a = {
    name:'Cherry',
    func1:function(){
        console.log(this.name)
    },
    func2:function(){
        setTimeout(function(){
            this.func1()
        }.apply(a),100)
    }
}

a.func2()       // Cherry
使用 call
var a = {
    name:'Cherry',
    func1:function(){
        console.log(this.name)
    },
    func2:function(){
        setTimeout(function(){
            this.func1()
        }.call(a),100)
    }
}

a.func2()       // Cherry
使用 bind
var a = {
    name:'Cherry',
    func1:function(){
        console.log(this.name)
    },
    func2:function(){
        setTimeout(function(){
            this.func1()
        }.bind(a)(),100)
    }
}

a.func2()       // Cherry
apply/call 区别
  • call 收到若干个参数
  • apply 接受一个包含多个参数的数组
var a = {
    name:'Cherry',
    fu:function(a,b){
        console.log(a+b)
    }
}

var b = a.fn;
b.call(a,1,2)   // 3

var c = a.fn;
c.apply(a,[1,2]) // 3
bind 与 apply/call 区别
  • bind 是创建一个函数,必须去手动调用
var a ={
    name : "Cherry",
    fn : function (a,b) {
        console.log( a + b)
    }
}

var b = a.fn;
b.bind(a,1,2)()           // 3
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容