Javascript - 创建方法

时间:2014-08-01 16:26:08

标签: object methods

我是javascript的新手。我找到了一些用于创建对象方法的示例代码。

<script>
function person(firstname,lastname,age,eyecolor){
   this.firstname = firstname;
   this.lastname = lastname;
   this.age = age;
   this.eyecolor = eyecolor;
   this.changeName = changeName;  //Why do I need this? What's it for?
   function changeName(name){
    this.lastname = name;
    }
}
....
</script>

我的问题是:为什么我需要写this.changeName = changeName(上面也有评论)。它的用途是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

因为在您的类中有一个名为changeName的属性,并且您传入一个名为changeName的参数,所以使用“this”它将引用class属性而不是您传入的参数。

您不必使用此功能,您可以执行以下操作:

function person(_firstname, _lastname, _age, _eyecolor){
    firstname = _firstname;
    lastname = _lastname;
    age = _age;
    eyecolor = _eyecolor;
    changeName = _changeName;  //Why do I need this? What's it for?

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

所以基本上通过使用它,它只能区分本地范围和类范围变量。

答案 1 :(得分:0)

我认为关键点在于javascript将函数存储在变量中。所以

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

相当于

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

因此,只需在构造函数中编写function changeName(..)...就会创建一个存储在局部变量而不是类成员变量中的函数。要将其转换为类成员,您需要执行this.changeName = changeName(请注意,这与其他变量完全相同)。

通常人们会像这样添加类函数:

function person(firstname,lastname,age,eyecolor){
   this.firstname = firstname;
   this.lastname = lastname;
   this.age = age;
   this.eyecolor = eyecolor;
}

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