не поняли использование линии в функции, работающей
<script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
myMother=new person("Sally","Rally",48,"green");
document.writeln(myMother.lastname + " is " + myMother.age + " years old.");
myMother.changeName("Doe");
document.writeln(myMother.lastname);
</script>
здесь сначала я определяю тело функции changeName() и вызываю эту функцию с параметром [myMother.changeName("Doe");]. он должен работать, когда он называется, как я узнал ранее.
но вот почему мне нужна эта строка (this.changeName = changeName). если я удалю его document.writeln(myMother.lastname), эта команда не работает. я не понял, почему это происходит и почему эта строка (this.changeName = changeName) используется...
PLZ помочь мне, чтобы выяснить проблему. Поскольку я начинающий программист в JavaScript, дайте мне знать процедуру или способ, каким образом я могу быть лучше в JavaScript или каким образом я должен следовать, чтобы сделать myselt лучшим программистом. Спасибо..
Чтобы иметь возможность использовать точечную нотацию (чтобы вы могли использовать myMother.changeName(name)
вместо changeName(myMother, name)
), функция должна быть установлена как свойство объекта. this.changeName = changeName
устанавливает функцию как свойство создаваемого объекта.
Лучшим способом было бы установить его на прототипе один раз, который затем сделает его доступным для всех объектов, созданных из конструктора person
:
person.prototype.changeName = function (name) {
this.lastname = name;
}
Таким образом, нам не нужно повторно создавать функцию каждый раз, когда мы создаем новый объект.
- Вопросы
- Javascript
- не поняли использование линии в функции, работающей