javascript - 无法理解函数工作中一行的使用

标签 javascript function

<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 中做得更好的过程或方法,或者我应该遵循哪种方法才能使自己成为更好的程序员。谢谢..

最佳答案

为了能够使用点符号(这样你就可以做 myMother.changeName(name) 而不是 changeName(myMother, name)),函数必须设置为对象的属性。 this.changeName = changeName 将函数设置为正在创建的对象的属性。


更好的方法是将它设置在原型(prototype)上一次,然后它可用于从 person 构造函数创建的所有对象:

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

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

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

相关文章:

javascript - 制作两个不同颜色的 Materialise 开关

javascript - 传递给 Javascript 函数的变量没有改变

javascript - 有没有办法在 JavaScript 中生成 "outsource"yield 语句?

ios - 如何在 iOS 中的特定时间运行一个函数?

Swift 在另一个函数中使用变量

php - Javascript/jQuery : File download ready event

javascript - 获取框而不是水平线

javascript - Sencha Touch 2 网格

javascript - 如何从浏览器中的变量运行全局常量函数

php - Joomla 包括数据库功能