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

JavaScript:将函数方法存储到变量,javascript,methods,assign,Javascript,Methods,Assign,我有一个变量a,它可以是一个对象,也可以是一个对象数组。我有一个数组数组 我想将a附加到array,因此我想到使用array.prototype.push.call或array.prototype.push.apply,使用三元运算符,如下所示: var a = "hello"; // or var a = ["hello", "world"]; var array = []; var append = ($.isArray(a)) ? Array.prototype.push.apply :

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

我想将
a
附加到
array
,因此我想到使用
array.prototype.push.call
array.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新手,我想这有一个很好的理由不起作用,但我找不到它。不能将
apply
call
分配给变量吗?(它们不是真正的函数?)或者调用
append()
时缺少什么

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



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

之所以会出现这种情况,是因为
call
apply
都是实例方法。它们对于上下文对象<代码>此非常关键


最后,您应该执行
append.call(Array.prototype.push,Array,a)
,因为
call
apply
需要函数
push
作为
this
传递,因为
call
apply
都是实例方法。它们对于上下文对象<代码>此非常关键


最后,您应该执行
append.call(Array.prototype.push,Array,a)
,因为
call
apply
需要函数
push
作为
this
传递,因为
call
apply
都是实例方法。它们对于上下文对象<代码>此非常关键


最后,您应该执行
append.call(Array.prototype.push,Array,a)
,因为
call
apply
需要函数
push
作为
this
传递,因为
call
apply
都是实例方法。它们对于上下文对象<代码>此非常关键


最后,您应该执行
append.call(Array.prototype.push,Array,a)
,因为
call
apply
需要函数
push
作为

传递,您不需要任何if,只需使用
concat

var array = [];
var a = "hello"; // or var a = ["hello", "world"]
array = array.concat(a);

您不需要任何if,只需使用
concat

var array = [];
var a = "hello"; // or var a = ["hello", "world"]
array = array.concat(a);

您不需要任何if,只需使用
concat

var array = [];
var a = "hello"; // or var a = ["hello", "world"]
array = array.concat(a);

您不需要任何if,只需使用
concat

var array = [];
var a = "hello"; // or var a = ["hello", "world"]
array = array.concat(a);

array=array.concat(a)a
始终是一个数组,那么就更容易了。
array=array.concat(a)a
始终是一个数组,那么就更容易了。
array=array.concat(a)a
始终是一个数组,那么就更容易了。
array=array.concat(a)a
始终是一个数组,则会更容易。是的,但这并不能真正回答问题。是的,但这并不能真正回答问题。是的,但这并不能真正回答问题。是的,但这并不能真正回答问题。