我正在尝试创建一个对象并附加一个相应的 DOM 元素,我想将触发函数的事件绑定(bind)到该元素。 我的问题是:是否可以在该绑定(bind)函数中访问对象的初始值?
function Bloc() {
this.DOMel;
this.ID = Math.round( Math.random() * 1000);
this.startPosX;
this.init = function() {
$('#blocs-container').append( '<div class="bloc" data-id="' + this.ID + '"></div>' );
this.DOMel = $('.bloc[data-id="' + this.ID + '"]');
this.DOMel.bind('touchstart', function(e) {
this.startPosX = e.originalEvent.touches[0].pageX;
});
}
}
例如,我想在绑定(bind)到 touchstart 事件的函数内访问和修改 this.startPosX。
这可能吗?如果没有,我应该如何解决它?
谢谢!
最佳答案
你可以利用这个:
function Bloc() {
var self = this;
self.startPosX;
}
然后在你的函数中将其调用为self.startPosX
。
Why the above works?
在变量self
中存储函数Bloc
的实例。当您进入匿名函数并分配给 this.init
时,上下文会发生变化,并且 this
指向此函数的实例。因此,您无法使用 this 访问已存储到外部上下文的变量。但是,使用上述技巧,您可以使用 self
访问 startPosX
所在的上下文。
关于javascript - 访问绑定(bind)函数内的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920105/