Javascript在对象中使用绑定,我如何访问对象this
Javascript using bind within an object, how can I access object this?
我正在为我正在创建的小游戏构建一个事件管理器,并且偶然发现了一个小问题(我不知道这是设计模式问题还是有解决方案)!
以下面为例;
o.Events = (function() {
"use strict";
function mousedown() {
// Set mousedown boolean
// # How can I change o.Events.mousedown
// For each layer
this.layers.forEach(function(layer) {
// Layer is listening
if (layer.listening && layer.mouse.x && layer.mouse.y) {
console.log("mousedown");
}
});
};
function init(game) {
// Mousedown boolean
this.mousedown = false;
game.element.addEventListener("mousedown", mousedown.bind(game), false);
};
function Events(game) {
// Initialize events
init.call(this, game);
};
return Events;
})();
我怎么能改变Events.mousedown
标志,即使我绑定游戏,使内部功能this
实际上是游戏?
谢谢
如果不能绑定闭包,则需要使用闭包。我也不会将mousedown
函数绑定到game
,因为它不是它的方法。简单规则:
o.Events = function Events(game) {
"use strict";
this.mousedown = false;
var that = this;
game.element.addEventListener("mousedown", function mousedown(e) {
/* use
e - the mouse event
this - the DOM element ( === e.currentTarget)
that - the Events instance
game - the Game instance (or whatever was passed)
*/
that.mousedown = true;
// For each layer
game.layers.forEach(function(layer) {
// Layer is listening
if (layer.listening && layer.mouse.x && layer.mouse.y)
console.log("mousedown");
});
}, false);
};
相关文章:
- 嵌套对象文本访问父级
- AngularJS-点击对象,访问它's ID&以该ID作为参数激发函数
- 是否可以在定义对象时访问对象值
- 如何维护对原型对象的访问
- 可以't在动态附加CKEDITOR对象之后访问它
- Html对象标记:访问Html页面中的元素
- 对象获取访问器不返回预期值
- 在jQuery的.on()数据对象中访问$(this)
- 在方法调用对象之外访问变量而不使它们全局化(可能吗?
- JavaScript-DHTML:对象值访问
- jQuery mobile 1.1.0 滑块:JS-对象属性访问
- 由 dojo.declare 创建的对象如何访问自己的属性
- JavaScript 原型对象 - 如何访问继承
- Javascript 对象,访问相关键
- JSON.parse 返回 [对象对象] 查找访问对象的属性
- 使用委托绑定 jquery 对象时访问它
- 嵌套对象,访问父对象中的对象数组 = 未定义
- JavaScript - 尝试从另一个对象内部访问一个对象方法,得到未定义的错误
- Javascript 变量范围.如何从内部对象函数访问对象变量
- 通过JSON对象键访问javascript数组元素