对象函数内部的"this"引用

Ale*_*der 1 javascript scope

我有以下JavaScript代码:

function PatternField(id, name, pattern) {
    ...

    this.check = function () {
        var field = this.elem.val();
        ...
    };

    this.elem.keyup(this.check);
    this.elem.change(this.check);
}
Run Code Online (Sandbox Code Playgroud)

当执行变为check功能时var field = this.elem.val();,结果是this指向elem而不是实际对象.如何this从这个对象函数中访问real ?

zam*_*uts 6

this.check = function() {
    var field = this.elem.val();
    ...
}.bind(this);
Run Code Online (Sandbox Code Playgroud)

重要的部分是bind(this)在调用/调用函数时控制函数的范围(注意,在使用时不会立即调用该函数bind,如果你愿意的话,你正在操作定义......); 在这种情况下,保留PatternField的范围.查看有关bindMDN 的文档.


换句话说(关于一些神奇地删除自己的评论):

它确保this.check(当被调用时)的范围将是传递给第一个参数的bind任何内容,覆盖可能自然发生的任何内容.如果要在方法中this引用,则该方法将启用此功能.PatternFieldthis.checkbindFunction