猿问

javascript对象中的方法问题

functionperson(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
functionchangeName(name){
this.lastname=name;
}
}
varcont="";
myMother=newperson("Steve","Jobs",56,"green");
myMother.changeName("Ballmer");
for(variinmyMother){
cont+=i+":"+myMother[i]+"
";
}
document.write(cont);
本人新手,在对JS中的对象方法的调用中对例子产生疑惑,JS中调用方法直接用object.method()就行了,为什么在上面代码中还需要添加这一句代码呢
this.changeName=changeName;
如果把这一句删除了就会显示
myMother.changeNameisnotafunction
为什么需要在person中添加1个changeName属性才行呢?
烙印99
浏览 425回答 2
2回答

www说

functionperson(firstname,lastname,age,eyecolor){this.firstname=firstname;this.lastname=lastname;this.age=age;this.eyecolor=eyecolor;//加了这个语句后,声明的函数绑定到new操作符生成的对象的changName属性上,因为有其它变量引用到,故其不会被销毁掉this.changeName=changeName;//不加this.changeName=changeName;那么只是在person函数内部声明了一个函数,是一个person作用域范围内容的局部变量,而这个函数在person方法被调用后会被销毁掉functionchangeName(name){this.lastname=name;}}等价写法为functionperson(firstname,lastname,age,eyecolor){this.firstname=firstname;this.lastname=lastname;this.age=age;this.eyecolor=eyecolor;this.changeName=function(name){this.lastname=name;}}

胡子哥哥

functionchangeName(name){this.lastname=name;}相当于在person里面声明了一个私有的方法,只能在person内部可以调用,而this.changeName=changeName;通过this为外部调用changeName架起一座桥梁。所以实例化对象person后就可以调用changeName方法。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答