<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)......
请帮助我找出问题所在。由于我是JavaScript的初学程序员,让我知道程序或方法,我如何能更好地使用JavaScript,或者我应该遵循哪种方式使myselt成为更好的程序员。谢谢..
答案 0 :(得分:1)
为了能够使用点表示法(以便您可以myMother.changeName(name)
而不是changeName(myMother, name)
),必须将该函数设置为对象的属性。 this.changeName = changeName
将函数设置为正在创建的对象的属性。
更好的方法是在原型上设置一次,然后使其可用于从person
构造函数创建的所有对象:
person.prototype.changeName = function (name) {
this.lastname = name;
}
这样,我们不必在每次创建新对象时重新创建该函数。