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
始终是一个数组,则会更容易。是的,但这并不能真正回答问题。是的,但这并不能真正回答问题。是的,但这并不能真正回答问题。是的,但这并不能真正回答问题。