Javascript - создать экземпляр объекта, свойства которого были изменены

Отредактировано: скажем, я создаю конструктор для создания собственных пользовательских объектов:

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

и я нахожу во время выполнения, что мне нужно добавить к объектам, созданным этим конструктором, другое свойство, поэтому я использую это для добавления свойства к прототипу.

Person.prototype.alive;

теперь мой единственный конструктор получает только 1 val, возможно ли отправить тому же конструктору другой val? скажем что-то вроде var newPerson = Person(20,'' да);

2 ответа

Решение

Можно ли отправить этот же конструктор еще один 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'; явно для каждого старого экземпляра, который вы знаете.

Если вы рассматриваете возможность передачи различных параметров конструктору, было бы удобнее написать конструктору, чтобы он принимал спецификатор одного объекта.

function Person({paramZ: val, paramX: val})
Другие вопросы по тегам