У меня довольно простой объект JavaScript с некоторыми объектными методами, и я пытаюсь получить доступ/изменить информацию в массиве (хранящемся в глобальной переменной) изнутри один из этих методов. Вот мой код:Доступ к глобальной переменной изнутри метода объекта в Javascript
var list= [];
function person(firstname, age){
this.firstname = firstname;
this.age = age;
this.addPerson = function(){
list.push({firstname, age });
}
this.addPerson();
this.changeName = function (name, newname) {
var i = 0
for (i; i < list.length; i++);{
if (list[i].firstname === name){
list[i].firstname = newname;
}
}
}
}
var person = new Bunny('Jim', 20);
var person = new Bunny('Sally',40);
person.changeName('Jim', 'John');
Когда новый человек создан, они автоматически добавляются в мой список. Когда я вызываю changeName, я хочу ввести имя, которое я хочу изменить, и новое имя, которое оно должно быть. Тем не менее, я получаю сообщение об ошибке «Не могу прочитать свойство« firstname »undefined», что заставляет меня думать, что changeName не может получить доступ к моему списку.
В чем смысл функции 'addPerson'? Почему бы вам не «толкнуть» человека непосредственно внутри конструктора? – Lewis
Я написал addPerson, потому что я хотел подтолкнуть человека к списку, как только создаю новый. Я не мог заставить его работать без вызова addPerson(); внутри конструктора .... Я уверен, что есть лучший способ сделать это. Что бы вы сделали? – bjorkland
Просто посмотрите мой ответ для лучшего подхода. – Lewis