Javascript从同一对象内的私有方法调用公共方法
我可以从private one中调用public方法吗:Javascript从同一对象内的私有方法调用公共方法,javascript,oop,Javascript,Oop,我可以从private one中调用public方法吗: var myObject = function() { var p = 'private var'; function private_method1() { // can I call public method "public_method1" from this(private_method1) one and if yes HOW? } return { public_metho
var myObject = function() {
var p = 'private var';
function private_method1() {
// can I call public method "public_method1" from this(private_method1) one and if yes HOW?
}
return {
public_method1: function() {
// do stuff here
}
};
} ();
做一些类似于:
var myObject = function() {
var p = 'private var';
function private_method1() {
public.public_method1()
}
var public = {
public_method1: function() {
alert('do stuff')
},
public_method2: function() {
private_method1()
}
};
return public;
} ();
//...
myObject.public_method2()
不知道直接答案,但下面应该可以
var myObject = function()
{
var p = 'private var';
function private_method1() {
_public_method1()
}
var _public_method1 = function() {
// do stuff here
}
return {
public_method1: _public_method1
};
} ();
公共方法1
不是公共方法。它是一个匿名对象上的方法,完全在构造函数的return语句中构造
如果要调用它,为什么不这样构造对象:
var myObject = function() {
var p...
function private_method() {
another_object.public_method1()
}
var another_object = {
public_method1: function() {
....
}
}
return another_object;
}() ;
为什么不做一些你可以实例化的事情呢
function Whatever()
{
var p = 'private var';
var self = this;
function private_method1()
{
// I can read the public method
self.public_method1();
}
this.public_method1 = function()
{
// And both test() I can read the private members
alert( p );
}
this.test = function()
{
private_method1();
}
}
var myObject = new Whatever();
myObject.test();
这种方法不可取吗?不过我不确定
var klass = function(){
var privateMethod = function(){
this.publicMethod1();
}.bind(this);
this.publicMethod1 = function(){
console.log("public method called through private method");
}
this.publicMethod2 = function(){
privateMethod();
}
}
var klassObj = new klass();
klassObj.publicMethod2();
谢谢你的快速回答,我可以在公共变量中放置多个方法吗,我尝试了你的模型,但我有一些sintax错误,但在我的代码中拒绝像一个一样对待,(我将不得不调试它。再次感谢Daniel的解释我成功了,再次感谢大家,我接受了“BaroqueBobCat”主要是因为他是第一个,但Daniel的答案更为复杂。Anks Peter,不幸的是,我现在有很多代码来重写我主要用作名称空间的模型。