我创建了下面的函数来获取点击次数。它有效,但问题是当它调用func
时,func
没有clickCount所具有的对象上下文(即this
)。
在创建此问题时,StackOverflow显示了以下答案的链接,这几乎是我想要的,除了该函数是使用上下文(或?)定义的。我想在clickCount处理程序中应用上下文
How to pass object context to an anonymous function?
如何在clickCount调用func时传递此功能?
var clickCountObj = { //this is in the global context
'clickTime' : 400
};
$.fn.clickCount = function (func) {
$(this).click(function(e) {
if (!clickCountObj.prevClickTime || clickCountObj.prevClickTime < Date.now() - clickCountObj.clickTime) {
clickCountObj.clickCnt = 1;
} else {
clickCountObj.clickCnt = clickCountObj.clickCnt + 1;
}
clickCountObj.prevClickTime = Date.now();
func(clickCountObj.clickCnt, e);
});
}
答案 0 :(得分:1)
您正在寻找的是call
。它允许您调用函数并将this
设置为等于第一个参数。
function displayName(greeting) {
console.log(`${greeting}, I am ${this.first} ${this.last}`);
}
let me = {
first: 'Mike',
last: 'C'
};
displayName.call(me, 'Hello');
如果您希望将其他参数作为数组传递,也可以使用apply
。
function displayName(greeting) {
console.log(`${greeting}, I am ${this.first} ${this.last}`);
}
let me = {
first: 'Mike',
last: 'C'
};
displayName.apply(me, ['Hello']);
特别针对您的情况,请尝试
func.call(this, clickCountObj.clickCnt, e);