一个例子:
var MyClass = (function () {
function MyClass() {
// construct
}
MyClass.prototype.clickEvent = function() {
this.doSomething();
};
MyClass.prototype.doSomething = function() {
// do something here
};
return MyClass;
})();
var mc = new MyClass();
$('my-ele').click(mc.clickEvent.bind(mc));
我需要将 mc 绑定(bind)到 mc.clickEvent 才能使其工作。还有其他方法可以做到这一点吗?它工作得很好,只是如果有一种方法可以定义我的 clickEvent() 函数的范围,而无需在设置点击事件函数时附加 .bind(mc) ,那就太好了。
我看到了这样的事情:
MyClass.prototype.clickEvent = function() {
this.doSomething();
}.bind(this);
但这没有用。
最佳答案
var MyClass = (function () {
function MyClass() {
this.clickEvent = this.clickEvent.bind(this);
}
MyClass.prototype.clickEvent = function() {
this.doSomething();
};
MyClass.prototype.doSomething = function() {
alert('something');
};
return MyClass;
})();
var mc = new MyClass();
$('.my-ele').click(mc.clickEvent);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href=#" class="my-ele">test</a>
这样做是为了绑定(bind)它的所有类方法。
function MyClass() {
for (var i in this) {
if (typeof this[i] === 'function') {
this[i] = this[i].bind(this);
}
}
}
关于javascript - 将作用域绑定(bind)到函数调用之外的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009120/