1

別のJSからクラスを継承し、Parent関数にいくつかのプロトタイプ関数を追加しました。子の新しいインスタンスを作成するときに、親のコンストラクターを呼び出したいと思います。方法を提案してください。

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

親(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 に答える
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 に答える