var Student=function(){
this.greet=function(){console.log("hello");};
};
Student.prototype={
go:function(){console.log("byebye");}
}
定义一个类,应该把这个类的实例方法,写在构造函数里面,还是挂在prototype上面?为什么?
valueOf,toString,如果要重写这两个函数,应该写在构造函数中,还是prototype上面?
方法建议prototype,这样每个对象自动继承,普通类型数据也可以放在prototype,对象之类的数据不要放prototype里面,要不其中一个实例修改过都会影响到其他实例的值,除非你有这种需要
如
Student.prototype={
go:function(){console.log("byebye");}
attr:{a:1,b:2}//其中一个实例对attr的修改都会影响到其他实例的attr属性
}
对于方法,直接this.xxx会每次生成新对象存储函数,prototype函数是公用的。普通属性prototype或者this都可以,这个没区分,会自动拷贝一份给实例
valueOf,toString放prototype或者this.xxx都可以,应为是方法建议prototype
1、你都说了是实例方法,而非原型方法,所以只能放在构造函数里。
2、重写valueOf()、toString()两个方法,如果你的范围是这个类,那么就写入到原型中,如果让每一个对象都重写,那么就写进你要重写的对象类型的原型中,比如Object.prototype.value = fn、Function.prototype.toString = fn等
望采纳