在面向对象编程时, 父类中通过this添加方法跟通过prototype添加方法的执行结果是没有任何区别的,那么这两种方式又有什么区别呢?
先说结论:通过this添加方法相比用prototype添加方法,会占用更多的内存空间。
过程:
首先创建父类Foo,通过this定义sayName方法;同时向他的prototype添加sayHello方法;
function Foo(name){
this.name=name
this.sayName=function(){
console.log(this.name)
}
}
Foo.prototype.sayHello=function(){
console.log(this.name)
}
创建子类Bar,Bar继承Foo
function Bar(name,label){
Foo.call(this,name)
this.label=label
}
Bar.prototype=Object.create(Foo.prototype)
通过Bar,实例化a,b;查看a.sayName===b.sayName;bsayName===b.sayName
var a=new Bar('lg