JavaScript 对象继承问题

标签 javascript object javascript-objects

我是 JavaScript 对象和原型(prototype)的初学者,在尝试开发我的第一个“多级继承”JS 对象时,出现了一个意想不到的问题。 这是我的代码:

var Utils = function () {};
Utils.prototype = {
    sayHelloGeneral: function(){
        console.log('hello');
    }
};

var FormTools = function () {
    Utils.call(this);
    this.fields = [];
};
FormTools.prototype = Object.create(Utils.prototype);
FormTools.prototype.constructor = FormTools;
FormTools.prototype.sayHelloForm= function (fields) {
    console.log('hello form');
};

function GroupManager(value) {
    FormTools.call(this);

    this.val = typeof values === 'undefined' ? 1 : value;
};
GroupManager.prototype = Object.create(FormTools.prototype);
GroupManager.prototype.constructor = GroupManager;
GroupManager.prototype.helloGroupManager= function (givenValue) {
    console.log('Hello group manager');
};

为什么当我尝试调用组管理器时,它只打印 sayHelloGeneral 函数?

var GM = new GroupManager;

GM.sayHelloGeneral(); //->ok
GM.helloGroupManager(); //--> ok
GM.sayHelloForm(); //->sayHelloForm is not a function

最佳答案

它似乎工作正常。看下面的片段

var Utils = function () {};
Utils.prototype = {
    sayHelloGeneral: function(){
        console.log('hello');
    }
};

var FormTools = function () {
    Utils.call(this);
    this.fields = [];
};
FormTools.prototype = Object.create(Utils.prototype);
FormTools.prototype.constructor = FormTools;
FormTools.prototype.sayHelloForm= function (fields) {
    console.log('hello form');
};

function GroupManager(value) {
    FormTools.call(this);

    this.val = typeof values === 'undefined' ? 1 : value;
};
GroupManager.prototype = Object.create(FormTools.prototype);
GroupManager.prototype.constructor = GroupManager;
GroupManager.prototype.helloGroupManager= function (givenValue) {
    console.log('Hello group manager');
};


var GM = new GroupManager;

//GM.sayhello(); //->ok---> should be sayHelloGeneral()
GM.sayHelloGeneral();
GM.helloGroupManager(); //--> ok
GM.sayHelloForm(); //->Works fine too

关于JavaScript 对象继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33035652/

相关文章:

JavaScript json数组输出

javascript - 将数组中的字符串文字转换为变量名

javascript - 使用字符串访问数组中的对象

javascript - 实例变量在增量游戏的 javascript 类中无法正常工作

javascript - 如何 append 到 Angular js中的json对象

javascript - html 图像 blob 到 base64

javascript - 调用 JavaScript 对象函数

javascript - 如何神奇地获得对象键?

javascript - 返回站点地图 url

javascript - 如何调用对象内部的特定函数?