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

方法一

var foo = function(){};

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

方法二

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 回答