<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()函数主体,并使用parameter [myMother.changeName(“ Doe”);]调用该函数。正如我先前所学的那样,它应该工作。

但是在这里,为什么我需要这一行(this.changeName = changeName)。如果我将其删除document.writeln(myMother.lastname),则此命令无效。我无法理解为什么会这样以及为什么使用此行(this.changeName = changeName)...

请帮我找出问题所在。因为我是JavaScript的初学者,所以请告诉我有关如何使我的JavaScript更好的过程或方法,或者我应该遵循的使我自己成为更好的程序员的方法。谢谢..

最佳答案

为了能够使用点符号(以便您可以使用myMother.changeName(name)代替changeName(myMother, name)),必须将该函数设置为对象的属性。 this.changeName = changeName将该函数设置为正在创建的对象的属性。



更好的方法是在原型上设置一次,然后将其提供给从person构造函数创建的所有对象:

person.prototype.changeName = function (name) {
    this.lastname = name;
}


这样,我们不必在每次创建新对象时都重新创建函数。

关于javascript - 无法理解函数工作中对行的使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17332234/

10-10 18:09