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
原型中声明它吗?
为了详细说明,我想在每个实例上调用f.onCreate
,而不是调用通用foo.onCreate
。
答案 0 :(得分:0)
如果这是你要问的。
删除静态onCreate以成为公共成员Create(也可以使用prototype创建公共实例方法)。同时为该课程添加了私人会员。私人成员只能在内部调用。 阅读此article了解更多详情
var foo = function(){
function privateMember(){
console.log('Private Member');
};
return {
create : function(){
privateMember();
console.log('Public Member');
}
};
};
答案 1 :(得分: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/