javascript - 红皮书说的借用构造函数继承问题

查看:59
本文介绍了javascript - 红皮书说的借用构造函数继承问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

javascript高级程序设计 p167 页说借用构造函数无法函数复用,而且在超类型的原型中定义的方法,对子类型不可见

1.为什么不能函数复用?下面代码不算复用吗?

function Super(name) {
    this.name = name
    this.say = function () {
        console.log(this.name)
    }
}

function Sub(name) {
    Super.call(this, name)
}

var i1 = new Sub('sub1')
var i2 = new Sub('sub2')

i1.say()
i2.say()

2.在超类型的原型中定义的方法,对子类型不可见什么意思?

解决方案

1.借用构造函数也是构造函数,所以每一个实例的里面的函数都是单独,并不是复用同一个函数,这在144页的构造函数里面有提及。

2.简单来说,因为super.prototype不等于sub.prototype,所以当你用

super.prototype.func = func;

给超类定义一个函数时,通过new sub()得到的实例并没有这个函数。所以说对于子类不可见。

这篇关于javascript - 红皮书说的借用构造函数继承问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆