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})