Javascript 公共实例方法
是否可以创建Javascript 公共实例方法,javascript,Javascript,是否可以创建onCreate的公共实例方法,而不是将其作为静态方法?如果是这样,我会在构造函数中声明它,还是在foo原型中声明它 为了详细说明,我想在每个实例上调用f.onCreate,而不是调用泛型foo.onCreate,如果这是您所要求的 删除了静态onCreate以成为公共成员Create(也可以使用prototype创建公共实例方法)。还为类添加了一个私有成员。只能在内部调用私有成员。 阅读本文了解更多细节 var foo = (function(){ var c = fu
onCreate
的公共实例方法,而不是将其作为静态方法?如果是这样,我会在构造函数中声明它,还是在foo
原型中声明它
为了详细说明,我想在每个实例上调用
f.onCreate
,而不是调用泛型foo.onCreate
,如果这是您所要求的
删除了静态onCreate以成为公共成员Create(也可以使用prototype创建公共实例方法)。还为类添加了一个私有成员。只能在内部调用私有成员。
阅读本文了解更多细节
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();
方法1
var foo = function(){
function privateMember(){
console.log('Private Member');
};
return {
create : function(){
privateMember();
console.log('Public Member');
}
};
};
onCreate called
onCreate called
方法2
var foo = function(){};
foo.prototype.onCreate = function() {
console.log("onCreate called");
};
var foo = function(){
this.onCreate();
};
foo.prototype.onCreate = function() {
console.log("onCreate executed");
};
样本测试:
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();
编辑:带回调
方法1
var foo = function(){
function privateMember(){
console.log('Private Member');
};
return {
create : function(){
privateMember();
console.log('Public Member');
}
};
};
onCreate called
onCreate called
方法2
var foo = function(){};
foo.prototype.onCreate = function() {
console.log("onCreate called");
};
var foo = function(){
this.onCreate();
};
foo.prototype.onCreate = function() {
console.log("onCreate executed");
};
编辑:一个简单的演示你所说的
公共实例方法
和静态方法
是什么意思?很抱歉,当涉及javascript时,我会感到困惑。@fourtheye我想将foo.onCreate
更改为f.onCreate
。换句话说,访问每个实例上的方法。恐怕这不是我想要的。希望我上面的评论能让它更清楚。我希望在调用新实例时进行回调,而不是自己简单地调用onCreate方法。@Johan更新了我的解决方案。请现在检查。新的方法1更接近我需要的。但是,在一个实际的例子中,你怎么称呼它呢?请随意添加一个fiddle@Johan添加了一个演示小提琴。请检查。f
实例上仍然没有回调方法