zzzcsd
zzzcsd
2016-02-26 02:53
采纳率: 19.8%
浏览 1.5k

Javascript,定义一个类

 var Student=function(){
            this.greet=function(){console.log("hello");};
};
Student.prototype={
go:function(){console.log("byebye");}
}

定义一个类,应该把这个类的实例方法,写在构造函数里面,还是挂在prototype上面?为什么?
valueOf,toString,如果要重写这两个函数,应该写在构造函数中,还是prototype上面?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • showbo

    方法建议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

    点赞 评论
  • yishuixs
    yishuixs 2016-02-27 09:29

    1、你都说了是实例方法,而非原型方法,所以只能放在构造函数里。

    2、重写valueOf()、toString()两个方法,如果你的范围是这个类,那么就写入到原型中,如果让每一个对象都重写,那么就写进你要重写的对象类型的原型中,比如Object.prototype.value = fn、Function.prototype.toString = fn等

    望采纳

    点赞 评论

相关推荐