为什么要使用func.call(this)

1.为什么要使用func.call(this)

在正常模式下,js 函数里那些你没有声明就使用的变量,其实是访问的全局对象的属性。但是在严格模式下,不允许这种语法,所有变量都必须要显示声明,所以如果你不用 call() 传递 this 给这个函数,那么就会报错了。用了严格模式,就必须这么写。

(function(){
    console.log(this === window) // true
})();
(function(){
    console.log(this === window) // true
}).call(this);

/* 严格模式 */
(function(){
    'use strict'
    console.log(this === window) // false
})();
(function(){
    'use strict'
    console.log(this === window) // true
}).call(this);

严格模式下函数调用this不会默认指向全局对象,使用func.call(this)确保函数调用的this指向函数调用时的this(即全局对象)。可以简单理解为避免变量冲突。

posted @ 2019-04-03 17:25  小方块的世界  阅读(437)  评论(0编辑  收藏  举报