this指向

2019-06-21  本文已影响0人  stringtoString

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,,,)

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

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

上一篇 下一篇

猜你喜欢

热点阅读