在以下函数中,其内部的方法称为newlastname
:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.newlastname=newlastname;
}
function newlastname(new_lastname)
{
this.lastname=new_lastname;
}
在this.newlastname=newlastname;
行中发生了什么?第一个newlastname是指什么?我感谢任何提示或建议。
答案 0 :(得分:2)
在这行代码中:
this.newlastname=newlastname;
第一个newlastname
是person
对象上的属性。
第二个newlastname
是对newlastname()
函数的引用。
所以,当你这样做时:
this.newlastname=newlastname;
您正在person
对象的属性中存储对该函数的引用。这将允许以下代码工作:
var p = new person("Ted", "Smith", 31, "blonde");
p.newlastname("Bundy");
执行p.newlastname("Bundy");
时,它会在名为person
的{{1}}对象上查找属性。当它找到该属性时,它将执行该函数并将其传递newlastname
并将"Bundy"
设置为特定的this
对象。
答案 1 :(得分:1)
当你在函数内部this.x = x
(所有函数都是对象)时,第一个x成为对象的属性。因此,您可以在对象内的任何位置执行this.x
来访问其值。例子 -
function test (x)
{
this.x = x + 2; // the first x is an property of test. the second is the passed argument
return this.x;
}
console.log(test(2)); // 4
您还可以执行以下操作来检查测试的所有属性和方法
console.log(new test(2));