我是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
(上面也有评论)。它的用途是什么?
谢谢!
答案 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;
}