我有一个关于关键字“this”如何在以下上下文中起作用的问题。这是一个带有phaser框架的tutorial,代码如下所示(我只是将它们合并在一起):
var game = new Phaser.Game(400, 490);
game.state.add('main', mainState);
game.state.start('main');
var mainState = {
preload: function() {},
create: function() {
this.bird = game.add.sprite(100, 245, 'bird');
},
update: function() {}
};
在create函数中有一个'this'。我想我明白这是做什么的,但这个例子证明我错了。 this
关键字 - 在此上下文中 - 指向mainState
,正确(只是一些信息:一旦调用mainState
启动第3行,创建函数就会启动)?
我可以访问mainState
对象之外的鸟(通过 mainstate.bird ),但为什么不能在游戏对象之外定义如下的原型函数?
mainState.prototype.myFunction() {}
我会收到一个错误,并且我无法解释。
答案 0 :(得分:-2)
mainState是一个对象文字。 '原型'是用于原型继承的javascript中的函数对象的属性。 Javascript Prototype
答案 1 :(得分:-2)
有一件事总能帮助我记住this
将会是什么,要注意谁正在调用该函数,请查看此代码段
var sayHi = function() { console.log(this.name) }
var yoda = { name: "Yoda", sayHi: sayHi }
var darthVader = { name: "Anakin Skywalker", sayHi: sayHi }
// the `this` here will be the yoda object
yoda.sayHi()
// the `this` here will be the darthVader object
darthVader.sayHi()
window.name = "Global name"
// here, since nothing was specified, the object is the global object, or the window on browsers, this the same as "window.sayHi()"
sayHi()