【发布时间】:2016-11-19 21:48:07
【问题描述】:
我正在使用 JavaScript ES6 和 babel。
但我知道申请不起作用
终于找到解决办法了
var log = Function.prototype.bind.call(console.log, console);
log.apply(console, ["this", "is", "a", "test"]);
在这个链接 console.log.apply not working in IE9
所以我替换为
const params = [
level,
].concat(...args)
到
var params = [ level,]
var concat = Function.prototype.bind.call(params.concat, Array);
var paramsConcated =concat.apply(params, args)
但它打印出来是这样的。
function Array() { ... }, [second arg...], [third arg..]
总是为第一个参数打印 function Array() {...}。
我有错吗?
编辑 1: 很抱歉没有提到输出。我想让 paramsConcated 到 [level, args[0], args[1], ... , args[n]]。
编辑 2: 构建后,params.concat(...args) 被 concat.apply(params.args) 替换。 所以,我不应该使用 3 个点。
【问题讨论】:
-
请edit您的问题包括对代码应该做什么的描述。期望的输出是什么?
-
所以你觉得
.apply()"doesn't work" 在 IE8 中,但是你没有定义什么不工作,而是发布了你认为是解决方案。回到原来的问题怎么样。.apply()确实工作,但它根据 ES3 工作,这与 ES5+ 不同。 -
Function.prototype.bind.call(console.log, console)与console.log.bind(console)完全相同。Function.prototype.bind.call(params.concat, Array);,如果你需要它(你不需要它),它与 'params.concat.bind(Array)` 完全相同。 -
@squint 你说如果我使用 es3ify 插件我可以使用 apply 吗?
-
@torazaburo 你的意思是像 'paramsConated=params.concat.bind(args)' 一样使用它?
标签: javascript