考虑这个例子:
wofForm = function( $form ) {
this.form = $form;
this.select = this.form.find(".sm-product-select");
this.productChange();
}
wofForm.prototype.productChange = function() {
this.select.on("change", **this.checkIfVariableProduct** )
}
wofForm.prototype.checkIfVariableProduct = function() {
console.log("searching ", this );
}
为什么当我传递this.checkIfVariableProduct
内部产品时,它实际上传递了选择对象而不是wofForm实例?我想进一步传递wofForm实例,而不是select的jQuery对象。
答案 0 :(得分:3)
处理程序的this
值由jQuery的on
方法设置。 “当jQuery调用处理程序时,this
关键字是对传递事件的元素的引用。”要手动设置this
值,您可以使用Function.prototype.bind
或$.proxy
方法。
this.select.on("change", this.checkIfVariableProduct.bind(this) );