为了账号安全,请及时绑定邮箱和手机立即绑定

js的函数属性prototype

js的函数属性prototype

千万里不及你 2018-12-07 05:21:45
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是子类,而第二种写法不是吗
查看完整描述

6 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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

查看完整回答
反对 回复 2018-12-24
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

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

查看完整回答
反对 回复 2018-12-24
?
慕标5832272

TA贡献1966条经验 获得超4个赞

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

查看完整回答
反对 回复 2018-12-24
?
holdtom

TA贡献1805条经验 获得超10个赞

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

查看完整回答
反对 回复 2018-12-24
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

父类里面的属性访问不到

查看完整回答
反对 回复 2018-12-24
  • 6 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信