【问题标题】:Instantiate an object by calling constructor with parameter list using apply?通过使用apply调用带有参数列表的构造函数来实例化一个对象?
【发布时间】:2009-09-02 15:35:43
【问题描述】:

给定这样的函数/类型声明:

function Person(name, ... other args ...){
    this.name
    ... other init code ...
}

我希望能够调用 Person 构造函数,并为其应用一组参数。我可以这样做:

Person.apply(this, args)

除了 this 不实例化一个人之外,它只是将它作为一个函数调用。有什么方法可以用这种方式称呼它,但在“新”上下文中,即表现得像:

new Person(...)

【问题讨论】:

标签: javascript prototype


【解决方案1】:

原因:

var newInstance=Person.apply({}, args);

您将构造函数应用于空对象。但是您应该知道,这并不是真正的类实例。如果你想赌类的实例,你应该把原型对象的克隆作为第一个参数。

【讨论】:

  • 我试过这个,但必须修改它才能工作:var newInstance = {}; Person.apply(newInstance, args);
【解决方案2】:

关于这个before 有相当长的反复。

简而言之,不,您不能这样做并让它适​​用于所有情况。有一些非常有价值的代码示例说明了如何在该链接中完成它,但每个都有一个中断的情况。不过,这对您来说可能已经足够了。

【讨论】:

【解决方案3】:

【讨论】:

  • 是的,我知道,但他的结论是错误的。确实有一个干净的方法可以做到这一点。
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 2010-11-25
  • 1970-01-01
  • 2011-04-04
  • 2012-07-28
相关资源
最近更新 更多