//建立一个人类 类
//并且把this 作为返回值
//xiaomin.getName().getSex(); = xiaomin.getName();xiaomin.getSex();
var person = function(){};
person.prototype={
name:'xxx',
sex:'xxx',
getName:function(){
console.log(this.name);
return this;
},
getSex:function(){
console.log(this.sex);
return this;
}
}
//小明小红是类的实例
var xiaomin =new person();
xiaomin.name='xiaomin';
xiaomin.sex='man';
xiaomin.getName().getSex();
var xiaohong =new person();
xiaohong.name='xiaohong';
xiaohong.sex='woman';
xiaohong.getName().getSex();
上面的是原型类和原型类实例 和下面这种类对象和实例有什么区别呢?
var person = function(){
this.name='xx',
this.sex='xx',
this.getName=function(){
console.log(this.name);
return this;
},
this.getSex=function(){
console.log(this.sex)
return this;
}
};
//小明小红是类的实例
var xiaomin =new person();
xiaomin.name='xiaomin';
xiaomin.sex='man';
xiaomin.getName().getSex();
var xiaohong =new person();
xiaohong.name='xiaohong';
xiaohong.sex='woman';
xiaohong.getName().getSex();
区别在于用this定义的方法,都是定义在了函数内部,所以每次new 的时候,新创建的对象就会负责一个份出来。复制出来的就会占用一块内存。
而用prototype创建的实例,如果没有重写原型的方法比如getName(),那么你调用getName()的时候,就会使用person的方法。如果你重写了比如这样
this.getName=function(){
console.log("my is":this.name);
return this;
},
才会在内存上加上一个新的。
这样大大的减少了 。一些不会被重写的方法对内存的消耗 。