js 继承问题

var util = require('util');
    function Base() {
        this.name = 'base';
        this.base = 1991;
        this.sayHello = function() {
            console.log('Hello ' + this.name);
        };
    }
    Base.prototype.showName = function() {
        console.log(this.name);
    };
    function Sub() {
        this.name = 'sub';
    }
    util.inherits(Sub, Base);

var objSub = new Sub();
console.log(objSub);

很明显会打印{ name: 'sub' }

Sub 仅仅继承了 Base 在原型中定义的函数,而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 Sub 继承。

那么 如何继承构造函数内部创造的 base 属 性和 sayHello 函数 求解答

阅读 3.8k
5 个回答
function Sub() {
    Base.apply(this, arguments);
    this.name = 'sub';
}

js要自己调用父类的构造函数

//新加代码
__extends = function (child, parent) {
    child.prototype = new parent();
    child.prototype.constructor= child;
    return child;
};
//====================
    function Base() {
        this.name = 'base';
        this.base = 1991;
        this.sayHello = function() {
            console.log('Hello ' + this.name);
        };
    }
    Base.prototype.showName = function() {
        console.log(this.name);
    };
    function Sub() {
        this.name = 'sub';
    }

__extends(Sub,Base);
var obj = new Sub();
obj.sayHello();

Sub.prototype = new Base();
Sub.prototype.constructor = Sub;
var sub1 = new Sub();
console.log(sub1.base)

<<javascript高级程序设计 - 第5版>> 第六章 6.3继承;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题