1

我从另一个 JS 继承了一个类,并在父函数上添加了一些原型函数。当我创建一个新的子实例时,我想调用父的构造函数。请提出一种方法。

家长

function Parent() { .. } 
    Parent.prototype.fn1 = function(){};
    exports.create = function() {
    return (new Parent());
};

孩子

var parent = require('parent');
Child.prototype = frisby.create();
function Child() { .. } 
Child.prototype.fn2 = function(){};
exports.create = function() {
    return (new Child());  
};
4

3 回答 3

1

您可以使用模块util。看简单的例子:

    var util = require('util');

function Parent(foo) {
    console.log('Constructor:  -> foo: ' + foo);
}

Parent.prototype.init = function (bar) {
    console.log('Init: Parent -> bar: ' + bar);
};

function Child(foo) {
    Child.super_.apply(this, arguments);
    console.log('Constructor: Child');
}


util.inherits(Child, Parent);

Child.prototype.init = function () {
     Child.super_.prototype.init.apply(this, arguments); 
     console.log('Init: Child');
};

var ch = new Child('it`s foo!');

ch.init('it`s init!');
于 2014-05-07T20:36:53.413 回答
0

首先,不要导出create方法,导出构造函数(Child, Parent)。然后您将能够在孩子上调用父母的构造函数:

var c = new Child;
Parent.apply(c);

关于继承。在节点中,您可以使用util.inherits方法,该方法将设置继承并设置到超类的链接。如果您不需要链接到超类或只想手动继承,请使用proto

Child.prototype.__proto__ = Parent.prototype;
于 2012-10-27T01:13:21.707 回答
0

父级 (parent.js)

function Parent() {
}

Parent.prototype.fn1 = function() {}
exports.Parent = Parent;

孩子

var Parent = require('parent').Parent,
    util = require('util');

function Child() {
   Parent.constructor.apply(this);
}
util.inherits(Child, Parent);

Child.prototype.fn2 = function() {}
于 2012-10-27T01:26:39.583 回答