2016-06-21 85 views
3

我用this answer here通过使用下面的代码传递数组参数构造一个新的类实例:参数使用绑定时丢失应用与数组参数

new (Cls.bind.apply(Cls, arguments))(); 

但我的论据之一是数组和值获得建设

过程中丢失,您可以查看演示此in this CodePen

在我传递的第三个参数properties的例子为例:

var properties = [ 
    { name: "first", value: "1" }, 
    { name: "second", value: "2" }, 
    { name: "third", value: "3" } 
]; 

但是结果中的属性是undefined

显然这里出了问题,但是什么?为什么?

回答

4

你的代码几乎是正确的,但你需要一个额外的参数传递给您的factory()factory(undefined, name, description, properties)

这在SO回答你在你的问题链接到强调:

的任何参数并不重要,因为新的关键字会重置f的上下文。但是,由于语法原因,这是必需的。现在,为了进行绑定调用:我们需要传递可变数量的参数,所以这个技巧: var f = Cls.bind.apply(Cls,[anything,arg1,arg2,...]); result = new f();

+0

男人,这是愚蠢的... – Wilt

+0

我应该注意到它,我只需要更仔细地看看输出... – Wilt