为了账号安全,请及时绑定邮箱和手机立即绑定

javascript对象中的方法问题

javascript对象中的方法问题

烙印99 2019-04-13 08:37:22
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属性才行呢?
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

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;
}
}
                            
查看完整回答
反对 回复 2019-04-13
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

functionchangeName(name)
{
this.lastname=name;
}
相当于在person里面声明了一个私有的方法,只能在person内部可以调用,而this.changeName=changeName;通过this为外部调用changeName架起一座桥梁。所以实例化对象person后就可以调用changeName方法。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信