Javascript 为什么这是未定义的(使用babel)
我是一个使用javascript的新手,我有这个问题 今生Javascript 为什么这是未定义的(使用babel),javascript,babeljs,Javascript,Babeljs,我是一个使用javascript的新手,我有这个问题 今生 (function () { this.something = "something"; // error - this is undefined let loader = PIXI.loader; loader.add('ace', "assets/spritesData.json"); loader.on('complete', onAssetsLoaded); loader.load(); fun
(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();
}
})();
为什么“这个”没有定义?从我现在知道的“this”现在应该是函数的当前范围(在本例中是anon函数)
提前谢谢你的帮助 详细的解释可以在中找到。相关部分(据我所知,在公认的答案中未提及)是: 当我们使用严格模式时,
此
在全局函数和未绑定到任何对象的匿名函数中保存未定义的
值
详细的解释可以在中找到。相关部分(据我所知,在公认的答案中未提及)是: 当我们使用严格模式时,
此
在全局函数和未绑定到任何对象的匿名函数中保存未定义的
值
此
通常指调用对象,但您的函数是匿名的,直接调用。以下是创建新上下文的方法:
关键字将创建一个新的new
上下文并返回它this
function Constructor() { this.property = "a"; }; let instance = new Constructor(); // instance.property is now "a"
将包装函数,因此当调用函数时,function.bind({})
将引用此
{}
function.apply的工作原理与此类似,但会立即调用函数并要求您指定参数
- 对于高级用户:
此
通常指调用对象,但您的函数是匿名的,直接调用。以下是创建新上下文的方法:
关键字将创建一个新的new
上下文并返回它this
function Constructor() { this.property = "a"; }; let instance = new Constructor(); // instance.property is now "a"
将包装函数,因此当调用函数时,function.bind({})
将引用此
{}
function.apply的工作原理与此类似,但会立即调用函数并要求您指定参数
- 对于高级用户:
此
将引用代码中的全局上下文(例如窗口
),而不是函数上下文(您需要使用新建…
实例化使其引用函数)@RobM.-它将在非严格模式下保存全局上下文,但巴贝尔总是在严格模式下运行。对。谢谢你的回答:)我不知道它为什么会抛出这个错误,但是仅供参考-这个
将引用你代码中的全局上下文(例如窗口
),而不是函数上下文(你需要使用新建…
实例化使它引用函数)@RobM。-它将在非严格模式下保存全局上下文,但巴贝尔总是在严格模式下运行。对。谢谢你的回答:)