在纯 javascript 的严格模式下使用此关键字

问题描述

我正在尝试在函数中使用“this”关键字,这是有效的

var test = function(){
    console.log(this); //console logs the window object
}
(function(){
    test();
});

但是,当我尝试使用严格模式时,这是未定义的?

'use strict';
var test = function(){
    console.log(this); //undefined
}
(function(){
    test();
});

我想知道是否可以在严格模式下从函数内部访问 this 关键字?

非常感谢任何帮助。

所以对于任何面临同样问题的人 这有效

'use strict';
var test = {
    fname:'kalesh',check: function(){
        console.log(this.fname);
    }
};
(function(){
    test.check();
})();

似乎在严格模式下必须在对象内部才能使用此关键字,而不仅仅是在函数内部

解决方法

如果您只想将窗口对象应用于此,您可以使用 call(window)apply(window)

申请:https://www.w3schools.com/js/js_function_apply.asp

调用:https://www.w3schools.com/js/js_function_call.asp