我有以下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 ?
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