gpt4 book ai didi

javascript - .apply 和 .call 有什么区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:00 24 4
gpt4 key购买 nike

<分区>

我发现自己经常将 jQuery 对象与常规 js 对象一起使用;我正在尝试弄清楚如何在适当的时候在我的脚本中更频繁地使用 .call 和 .apply。我一直在测试代码以了解其实际工作原理。

但是,当我在我知道有 jQuery 的站点上的 firebug 中运行下面的代码(基本上只是隐藏了页面上的所有 div)时,我得到了不同的结果;我想知道它是 jQuery 的版本还是这段代码只是“错误”我要破译为什么 .call 总是有效但 .apply 不认为它会基于下面的代码相反

var myApp = {} // instantiate an empty objct
myApp.hide = function (whatever) {
that = whatever
$(that).hide()
}
var Numbers = function (object) {
this.object = object;
}

Numbers.prototype.div = $('div');
var numbers = new Numbers();
numbers.div
myApp.hide.call(numbers, numbers.div)
myApp.hide.apply(numbers, numbers.div)

当我使用 .call 或 .apply 调试上面的代码时,我会根据站点得到不同的结果。每个有 jquery .call 的网站都可以使用,但对于某些网站,如 jQuery.com 和 twitter,两者都可以使用 .apply 和 .call,但其他网站,如纽约时报和 Netflix 只能使用 .call - 我猜它的版本导致差异的 jQuery 但有点困惑,因为 numbers.div 总是返回页面上所有 div 元素的数组,所以我认为它会一直有效。感谢任何解释,因为我仍然掌握 .call 和 .apply 的概念 - 我总是引用 Douglas Crockford 的书,但说实话,他并没有详细介绍 .apply 和 .call

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