function person(firstname,lastname,age,eyecolor) {
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name) {
this.lastname=name;
}
}
var cont="";
myMother=new person("Steve","Jobs",56,"green");
myMother.changeName("Ballmer");
for (var i in myMother){
cont+=i+":"+myMother[i]+"<br />";
}
document.write(cont);
本人新手,在对JS中的对象方法的调用中对例子产生疑惑,JS中调用方法直接用object.method()就行了,为什么在上面代码中还需要添加这一句代码呢
this.changeName=changeName;
如果把这一句删除了就会显示
myMother.changeName is not a function
为什么需要在person中添加1个changeName 属性才行呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
等价写法为
this.changeName=changeName
只是另外一种写法,这里涉及到原型。JavaScript 不包含传统的类继承模型,而是使用 prototype 原型模型。
相当于在person里面声明了一个私有的方法,只能在person内部可以调用,而this.changeName=changeName;通过this为外部调用changeName架起一座桥梁。所以实例化对象person后就可以调用changeName方法。
这应该是在申明changeName()这个函数,一般函数的话都得先申明然后才可调用
这个是js的构造函数问题(http://segmentfault.com/a/1190000002983180#articleHeader5)
你可以将changeName看成是私有属性。那句代码的作用是让对象实例拥有访问私有方法的权限。