gpt4 book ai didi

javascript - 如何传递对象上下文

转载 作者:行者123 更新时间:2023-12-03 03:44:26 28 4
gpt4 key购买 nike

我创建了下面的函数来获取每次点击的点击次数。它可以工作,但问题是当它调用 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);
});
}

最佳答案

您正在寻找的是 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);

关于javascript - 如何传递对象上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45467365/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com