0

编辑:假设我创建了一个构造函数来创建我自己的用户定义对象:

var Person = Person(age) { this._age = living; };

我发现在运行时我需要向这个构造函数创建的对象添加另一个属性,所以我用它来添加原型的属性。

Person.prototype.alive;

现在我唯一的构造函数只有 1 个 val,是否可以向同一个构造函数发送另一个 val?说类似 var newPerson = Person(20,''yes);

4

2 回答 2

0

如果您考虑将不同的参数传递给构造函数,那么编写构造函数来接受单个对象说明符会更友好

function Person({paramZ: val, paramX: val})
于 2014-04-08T08:58:17.453 回答
0

是否可以向同一个构造函数发送另一个 val?说类似var newPerson = Person(20,'yes');

不,您拥有的构造函数只接受一个参数。

但是,您可以在您的情况下重新定义构造函数

Person = (function (original) {
    function Person(age, alive) {
        original.call(this, age);          // apply constructor
        this.alive = alive;                // set new property from new parameter
    }
    Person.prototype = original.prototype; // reset prototype
    Person.prototype.constructor = Person; // fix constructor property
    return Person;
})(Person);

请注意,在此之前创建的旧对象将自动获得新值。您需要为oldPerson.alive = 'no';您知道的每个旧实例明确设置它们。

于 2014-04-08T10:36:01.153 回答