this指向

1,this的指向
在函数中的this是在运行时候决定的,而不是函数定义时
全局环境中的this指window
其它函数中的this指向调用它的对象

2,改变this指向的方法
一,call 二,apply 三,bind

call()方法的使用:
函数体.call(obj)

        var obj1 = {
            fn: function () {
                // 执行逻辑
            }
        } 
        var obj2 = {
            fn: function () {
                // 执行逻辑
            }
        } 
        obj1.fn.call(obj2,,,)
  • call方法传参只需要使用多个逗号隔开

apply()方法的应用
区别:参数需要传入一个数组

        var obj1 = {
            name: 'li',
            fn: function () {
                return this.name;
            }
        } 
        var obj2 = {
            name: 'yang',
            fn: function (str) {
                return this.name+str
            }
        } 
        console.log(obj2.fn.apply(obj1,['888']))  //li888
  • 以上两个方法改变函数的this指向并立即调用该函数

bind在使用形式上和上面两个call和apply一样
只不过不立即调用,经常在定时器,或其他回调函数等不立即调用的函数改变this指向时使用
例如:setTimeout(function(){.bind(obj),1000)
该匿名函数在1000毫秒后调用,使用bind改变this指向又不立即调用,符合使用该场景时调用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容