我是一个新的使用JavaScript,我有这个问题..
在这个IIFE中
(function () {
this.something = "something"; // error - this is undefined
let loader = PIXI.loader;
loader.add('ace', "assets/spritesData.json");
loader.on('complete', onAssetsLoaded);
loader.load();
function onAssetsLoaded(){
this.gameSettings = GameSettings.getInstance();
createrenderer();
let rootView = new RootView(this._stage),
rootController = new RootController(rootView,this.gameSettings);
animate();
}
})();
为什么“这个”未定义?从我所知到现在“这个”现在这应该是函数的当前范围(在这种情况下是anon函数)?
提前感谢您的帮助。
答案 0 :(得分:1)
可以在this question中找到详细解释。相关部分(据我所知,在接受的答案中没有提到)是:
当我们使用严格模式时,
this
在全局函数和未绑定到任何对象的匿名函数中保存undefined
的值
答案 1 :(得分:1)
this
通常是指调用对象,但您的函数是匿名的并且直接调用。以下是创建新上下文的方法:
new
关键字会创建一个新的this
关联并返回。
function Constructor() { this.property = "a"; };
let instance = new Constructor();
// instance.property is now "a"
function.bind({})
将包装该函数,因此在调用该函数时,this
将引用{}
。 function.apply
的工作方式类似,但会立即调用该函数并要求您指定参数。
对于高级用户:Object.create