我有一个JavaScript类测试,它有一个私有函数 foo ,如下所示:
function Test(){}
(function()
{
var foo = function(){
// do stuff
console.log('private work');
}
this.publicStuff = function(){
foo();
}
}).apply(Test);
和一个看起来像这样的
function Test(){}
(function()
{
function foo(){
// do stuff
console.log('private work');
}
this.publicStuff = function(){
foo();
}
}).apply(Test);
他们都工作正常并做同样的事情,甚至可以像这样共存:
function Test(){}
(function()
{
var foo = function(){
// do stuff
console.log('private work VAR');
}
function foo(){
// do stuff
console.log('private work FUNC');
}
this.publicStuff = function(){
foo();
}
}).apply(Test);
但是当它们在一起时, var foo = function()会被执行而另一个则不会被执行。
定义这些私有函数的两种方法之间的区别是什么,最佳实践是什么以及每种方法的优点/缺点是什么