javascript - 访问绑定(bind)函数内的对象值

标签 javascript jquery object

我正在尝试创建一个对象并附加一个相应的 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/

相关文章:

javascript - 如何让额外的 div block 充当 slider

c++ - 在代码中创建工具箱对象(例如标签等)

perl - 有没有办法知道 Perl 中未知类的实例的方法

javascript - 在循环中使用 javascript 注册全局变量

javascript - 单击时恢复 CSS 过渡

javascript - 当按钮被禁用时创建警报

javascript - 在 Angular 6 中使用 json 模式验证 json

javascript - 在 javascript 中获取文本框值(或其本身)导致 null

javascript - 如何在 for 循环中 getElementsByTagName

javascript - 无法从 Key JSON MySQL PHP 获取值