gpt4 book ai didi

JavaScript:将函数方法存储到变量

转载 作者:行者123 更新时间:2023-11-28 19:06:00 26 4
gpt4 key购买 nike

我有一个变量a它可以是一个对象或对象数组。我有一个数组 array

我想追加aarray ,所以我想到使用 Array.prototype.push.callArray.prototype.push.apply使用三元运算符如下:

var a = "hello"; // or var a = ["hello", "world"];
var array = [];
var append = ($.isArray(a)) ? Array.prototype.push.apply : Array.prototype.push.call;
append(array, a); // Uncaught TypeError: undefined is not a function

($ 是 jQuery)

我是 JavaScript 新手,我想这不起作用有一个很好的理由,但我找不到它。不能applycall被分配给一个变量? (它们不是真正的函数?)或者在调用 append() 时缺少某些内容?

注意:我知道我可以用 if/else 来做到这一点但我更想了解为什么我不能将这些方法分配给变量并调用它。

<小时/>

小附加问题:我想这样做,因为我得到 a来自 JSON API,如果我理解正确的话,JSON 不能包含单个对象的数组。虽然我觉得我想做的事情一定很常见,但我也找不到其他开发人员如何处理这个问题。有没有比测试是否 a 更好的方法是否为数组并使用 apply()或不相应?

最佳答案

发生这种情况是因为 callapply 是实例方法。它们对于上下文对象 this 至关重要。

最终你应该执行 append.call(Array.prototype.push, array, a) 因为 callapply 需要函数 push 作为 this

传递

关于JavaScript:将函数方法存储到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687351/

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