【发布时间】:2016-12-22 00:29:13
【问题描述】:
我正在研究该帖子以寻求去抖动的解决方案:
我很难想出一种情况
func.apply(context, arguments);
是必要的,而不是仅仅使用
func();
我认为 99% 的机会它只会用作一个函数。在什么情况下它会附加到一个对象上?有人可以在这里举个例子吗?谢谢。
【问题讨论】:
-
function() { console.log("hello "+ this.name); }这是一个使用上下文的函数function.call({name: "bob"})这将使它改变它的输出。一个重要的例子Array.prototype.slice.call(arguments)是一个非常常见的模式,它使用arguments对象的上下文调用slice来生成一个数组。简单来说,有些函数使用了上下文,这种情况下call/apply可以很好地提供它,其他函数没有,在这种情况下设置上下文没有任何区别。因此,不设置上下文将使某些调用失败。添加它更通用。 -
@Vid 我很欣赏你的快速评论,但我真的不是在问上下文是如何工作的。我很好奇这个去抖动函数被用作方法而不是普通函数的例子。我只是看不到在这里使用“应用”有任何用处。不过感谢您的评论。
-
好吧,你不知道什么函数会被去抖动。它可能是有或没有上下文的,因此添加上下文是有用的。你不能保证一个函数在去抖动时会或不会使用上下文。
-
更不用说保留参数
-
^ @aw04 也是这么说的。我专注于上下文,但实际上,这些论点可能会比这更多次。
标签: javascript this debouncing