JavaScript:将函数方法存储到变量
JavaScript: store function method to variable
我有一个变量a
,它可以是一个对象或一个对象数组。我有一个数组array
。
我想把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
是实例方法。它们对上下文对象this
至关重要。
最终你应该执行append.call(Array.prototype.push, array, a)
,因为call
或apply
需要函数push
作为this
传递
您不需要任何if,只需使用concat
var array = [];
var a = "hello"; // or var a = ["hello", "world"]
array = array.concat(a);
相关文章:
- 使用javascript存储变量的最安全方式
- 如何在Javascript中为不同的页面访问存储变量
- Javascript 会话存储变量未正确保存
- 服务中的角度存储变量
- 在文本字段中显示保存的本地存储变量 - javascript
- 带有本地存储变量的 jQuery 循环不起作用
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 页面刷新后的 Javascript 存储变量
- 如何存储变量中单击的子项
- 如何获取不同选项卡的实例,以便我可以存储变量/执行特定于各个选项卡的操作
- 如何使用 jquery 使用本地存储变量设置输入字段
- 无法检索本地存储变量
- 显示本地存储变量
- HTML5会话存储:变量未存储在<李>onclick属性
- 在HTML或Javascript中,如何为每个人存储变量
- SeleniumIDE替换存储变量中的字符串
- JQuery设置本地存储变量
- 在服务AngularJS中存储变量
- 如何使用存储变量和随机数与硒ide
- 计算器Javascript/Jquery存储变量