通过使用apply来调用带有参数列表的构造函数来实例化一个对象?

时间:2009-09-02 15:35:43

标签: javascript prototype

给出一个像这样的函数/类型声明:

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

我希望能够调用Person构造函数,并将一个参数数组应用于它。我能做到:

Person.apply(this, args)

除了这不会实例化一个人,它只是将其称为一个函数。你有没有办法以这种方式称呼它,但在“新”语境中,即表现如下:

new Person(...)

3 个答案:

答案 0 :(得分:1)

原因:

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

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

答案 1 :(得分:1)

关于这个before,有一个相当冗长的来回。

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

答案 2 :(得分:0)