js的函数属性prototype

js的是基于原型链继承的,请问下面的两种情况差别在哪里?

function Oa(){  
}
Oa.prototype={
    fn1:function(){},
    fun2:function(){}
}
function Ob(name,age){
   this.name=name;
   this.age=age;
}
//第一种写法,类Ob通过new继承了Oa的属性(此处为空)和原型
Ob.prototype=new Oa;

//第二种写法,直接把Oa的原型对象赋值给了Ob
Ob.prototype=Oa.prototype;

这两种写法,都能够实现Ob的实例共享了Oa原型对象上的方法,差别在于第一种写法可以看作Oa是基类,Ob是子类,而第二种写法不是吗

千万里不及你
浏览 468回答 6
6回答

蝴蝶刀刀

第二种用得是同一个原型定义,如果Ob有扩展也会影响到Oa

一只萌萌小番薯

你可以画一下原型链(包括prototype,__proto__,constructor)。

慕标5832272

这个你看一下JavaScript面向对象编程,我记得博客园中有个这样的系列文章,讲的非常透彻,你搜一下

holdtom

第2中写法,这样导致基类的实例属性,子类访问不到

慕妹3146593

父类里面的属性访问不到
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript