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

Object.create的实现方法里面return new F和new Person()有什么区别?

Object.create的实现方法不是很理解,F函数的左右是不是相当于把Student.prototype赋值为proto?老师能把这个和1、2方法区别一下吗?

正在回答

3 回答

return new F 和 new F() 有区别吗

0 回复 有任何疑惑可以回复我~

有些父类需要传递参数,用return new F那种只需要调用一次父类构造函数,new的话会调用2次。详情请参考javascript高级程序设计第三版的6.3.6寄生组合式继承

0 回复 有任何疑惑可以回复我~

1、Object.create是创建一个空对象({}),空对象的原型指向传递进来的参数(Person.prototype),

      在这个例子当中就是,Student.prototype属性值是空对象,空对象的_proto_等于Person.prototype(空对象相当于是Person的实例,但是又不继承Person构造函数的属性),

      即Student.prototype._proto_=Person.prototype,

      这样Student的实例可以通过原型链访问Person.prototype的方法,但又不继承Person构造函数的方法和属性,可以在Student的构造函数中通过Person.call(this,'name','age')的方法对初始属性赋值;   

2、第二种方法先创建一个空的构造函数F,F.prototype=proto(即传进来的参数Person.prototype),那么这时候创建的F的实例,就相当于可以访问Person.prototype的方法,但又不继承Person构造函数的方法和属性,同Object.create是同样的效果。

如果是new Person()的话,那么就拥有Person构造函数的方法和属性了,达不到想要的目的。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Object.create的实现方法里面return new F和new Person()有什么区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信