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

js中寄生组合式继承的疑问?

js中寄生组合式继承的疑问?

宝慕林4294392 2018-12-20 16:14:19
function object(o){    function F(){}    F.prototype = o;    return new F();}function inheritPrototype(subType, superType){    var prototype = object(superType.prototype);    prototype.constructor = subType;    subType.prototype = prototype;}function SuperType(name){    this.name = name;    this.clolors = ['red', 'blue', 'green'];}SuperType.prototype.sayName = function (){    alert(this.name);}function SubType(name, age){    SuperType.call(this, name);    this.age = age;}SubType.prototype = inheritPrototype(subType, superType);SuperType.prototype.sayAge = function (){    alert(this.age);}这里是高程里实现寄生组合式继承的方法,我有一点想不明白:function object(o){    function F(){}    F.prototype = o;    return new F();}function inheritPrototype(subType, superType){    var prototype = object(superType.prototype);    prototype.constructor = subType;    subType.prototype = prototype;}这两个函数实现的效果和subType.prototype.__proto__ = superType.prototype有什么区别呢?如果没有区别,为什么非要用两个函数来实现?
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

高级程序设计中没有定义object函数吧,inheritPrototype中调用的是Object构造函数,返回一个新对象,具有和superType.prototype中一样的属性和方法,这样一来,每个实例继承的原型就不指向同一个原型对象(但是都是通过superType.prototype创建的副本)


查看完整回答
反对 回复 2019-01-09
  • 1 回答
  • 0 关注
  • 616 浏览
慕课专栏
更多

添加回答

举报

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