我正在开发一个超级简单的流星应用程序,发现了一些代码几乎可以满足我的要求,但是对underscorejs有依赖性。我从未使用过underscorejs,并且不希望拥有这种依赖关系(我当然听说过underscore很好,但是我现在不想处理任何不必要的包)。这是唯一使用underscorejs的行:
this.channels[name].args = _.toArray(arguments);
重写toArray函数会是微不足道的还是在引擎盖下进行一些繁重的工作?
该代码来自以下博客条目:http : //www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator-pattern,位于Mediator对象示例中。
谢谢!
arguments
是一个可迭代的对象,尽管它不是显式的Array
。如果您不关心JS引擎的含义,只需将其转换为真实数组即可。这使您可以arguments
像对待数组一样执行数组方法。您可以这样做:
this.channels[name].args = Array.prototype.slice.call(arguments);
另一种方法是:
this.channels[name].args = Array.apply(null, arguments);
如果要替换_.toArray()
而不依赖于下划线库,则可以执行以下操作:
_.toArray = function () { return Array.prototype.slice.call(arguments)[0]; };
ES6将具有传播运算符,它可以优雅地完成您想要的操作:
function someFunction(...args) {
this.channels[name].args = args;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句