传统 ES5 中通过构造函数实现类
- function Person(gender,age){
- this.gender=gender;
- this.age=age;
- }
- Person.prototype.toString=function(){
- var g="";
- g=this.gender=="female"?"she":"he";
- console.log(g+"is"+this.age+"years old");
- }
- var person1=new Person("male",20);
- person1.toString();
ES6 中用 Class 实现
- Class Person{
- constructor(gender,age){
- this.gender=gender;
- this.age=age;
- }
- toString(){
- var g="";
- g=this.gender=="female"?"she":"he";
- console.log(g+"is"+this.age+"years old");
- }
- }
- var person2=new Person("male",20);
- person2.toString();
以上两种写法都是一样的, 性能上也没有差别
可能会有疑问, 把 toString() 写在构造函数里会怎样?
比如
- function Person(gender,age){
- this.gender=gender;
- this.age=age;
- this.toString=function(){}
- }
这样每次实例都会创建新的 toString, 占用内存, 具体可以调试看看.
来源: http://www.qdfuns.com/article/16629/e383837bba2c8a3917e7d6fcb1c5d730.html