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;}}
胡子哥哥
TA贡献1825条经验 获得超6个赞
functionchangeName(name){this.lastname=name;}相当于在person里面声明了一个私有的方法,只能在person内部可以调用,而this.changeName=changeName;通过this为外部调用changeName架起一座桥梁。所以实例化对象person后就可以调用changeName方法。
添加回答
举报
0/150
提交
取消