0
var foo = (function(){

    var c = function() {
        c.onCreate(this);
    };

    c.prototype = {
        bar: function() {
            console.log('bar');
        }
    };

    c.onCreate = function(){};

    return c;

})();


foo.onCreate = function(instance){
    console.log('new instance of foo created', instance);
};

var f = new foo();

のパブリック インスタンス メソッドをonCreate静的メソッドとして作成するのではなく、作成することはできますか? もしそうなら、コンストラクター関数内で宣言しますか、それともfooプロトタイプで宣言しますか?

http://jsfiddle.net/LtTam/

f.onCreate詳しく説明すると、ジェネリックを呼び出すのではなく、各インスタンスを呼び出したいと思いますfoo.onCreate

4

2 に答える 2

0

これがあなたが求めているものなら。

静的な onCreate を削除して、パブリック メンバーの Create になりました (パブリック インスタンス メソッドは、プロトタイプを使用して作成することもできます)。クラスのプライベート メンバーも追加されました。プライベート メンバーは、内部でのみ呼び出すことができます。詳細については、この記事をお読みください

var foo = function(){

    function privateMember(){
        console.log('Private Member');
    };

    return {
        create : function(){
            privateMember();
            console.log('Public Member');
        }
    };

};
于 2013-09-02T11:23:48.223 に答える
0

方法 1

var foo = function(){};

foo.prototype.onCreate = function() {
    console.log("onCreate called");
};

方法 2

var foo = function() {
    var actualObject = {};
    actualObject.onCreate = function() {
        console.log("onCreate called");
    }
    return actualObject;
}

サンプル テスト:

var f = new foo();
f.onCreate();
var g = new foo();
g.onCreate();

出力

onCreate called
onCreate called

編集:コールバックあり

方法1

var foo = function(){
    this.onCreate();
};

foo.prototype.onCreate = function() {
    console.log("onCreate executed");
};

方法2

var foo = function() {
    var actualObject = {};
    actualObject.onCreate = function() {
        console.log("onCreate executed");
    }
    actualObject.onCreate();

    return actualObject;
}

編集:簡単なデモhttp://jsfiddle.net/fvTBE/

于 2013-09-02T12:30:06.560 に答える