我有一个javascript对象,我希望能够处理一些交互功能。以简单的方式描述场景有点棘手,所以希望它不会在这里失控。
我的对象看起来像
myobject = function() {
this.initialize = function() {
// HERE this = the myobject instance
var test = document.createElement('div');
test.onmousedown = this.mousedown;
}
this.mousedown = function(e) {
// HERE this = the calling div-element
}
}
所以我的问题基本上是this
在调用myobject
时不会是this.mousedown(e)
实例,在这种情况下它更像是调用者(如果术语正确吗?)它是我创建的div并放入一个名为test
的变量。
我想访问正在运行该方法的实例(因为我相信这是我创建的mousedown
方法。)
到目前为止,我已经尝试了一些想法:
data-
对象的div
上创建this
属性并对其进行操作。e
一起发送到this.mousedown(e)
现在我能想到的就是希望它有所作为。
答案 0 :(得分:4)
首次实例化对象时可以创建副本:
var myobject = function() {
var self = this;
this.initialize() {
// HERE this = the myobject instance
var test = document.createElement('div');
test.onmousedown = this.mousedown;
}
this.mousedown(e) {
// HERE this = the calling div-element
// use self instead of this
}
}
答案 1 :(得分:0)
最简单的解决方案是创建一个你在回调中引用的'self'var:
myobject = funciton() {
var self = this;
this.initialize() {
//use self to refer to myobject
self.mousedown(e);
}
this.mousedown(e) {
}
}