this指向

2019-10-22  本文已影响0人  light_follower

this应该是常见面试题,本想着总结下,发现以下链接全面详细的解释了该知识点

https://www.cnblogs.com/hjson/archive/2019/01/11/10254555.html

apply call bind的区别

apply()第一个参数是this指向的对象,第二个参数是函数执行时要传入的参数 ,必须是一个数组

Function.apply(obj[,argArray])

call()第一个参数是this指向的对象,第二个参数是函数执行时要传入的参数

Function.call(obj,[param1[,param2[,…[,paramN]]]])

bind()第一个参数是this指向的对象,第二个参数是函数执行时要传入的参数

区别:
call、apply能够改变函数执行时的上下文,将一个对象的方法交给另一个对象来执行,并且是立即执行。区别参数不同。
bind是返回一个函数,而不是像call、apply立即调用,需要稍后调用才会执行

总结:
call 和 apply 的主要作用,是改变对象的执行上下文,并且是立即执行的。它们在参数上的写法略有区别。
bind 也能改变对象的执行上下文,它与 call 和 apply 不同的是,返回值是一个函数,并且需要稍后再调用一下,才会执行。

上次自测this知识点有涉及作用域,还需注意立即执行函数this指向的是window
var a = 1;
console.log(a); //1 a在全局作用域
function fire() {
    var a = 2;
    console.log(a); // 2 fire函数作用域
    function innerFire() {
        var a = 3;
        console.log(a); //3 此时打印输出a,a在innerFIre作用域。从自身作用域查找变量,未找到才网上查找
    }
    innerFire();
}
fire()
上一篇下一篇

猜你喜欢

热点阅读