1.)如果我调用如下静态函数并且必须对传递给静态函数的某些数据执行附加操作。调用嵌套的内部函数会创建闭包吗?我所追求的是使 MakeSomethingOk 之类的操作在全局范围内不可用,因为 MakeSomethingOk 仅与 Person.PerformSomeTypeOfOperation 相关
2.) 是否可以从其他静态函数构造函数访问像 _persons[] 这样的集合对象,就像在共享中一样?无需做 Persons._persons
3.) 如果函数是静态的,函数构造函数是否仍被称为构造函数?
function Person() { };
function Persons() { var _persons = []; };
Person.PerformSomeTypeOfOperation = function (someThing) {
if (someThing == 'turnsOutToBeOk') { return 'anyThing' }
else {
function MakeSomethingOk() { }
//someThing is now being made Ok
};
};
更新下面的答案 (1.)。
function Person() { };
function Persons() { **protected static** _persons = []; };
Person.Operation1 = function (person) {
if(person.id == _persons[0].id){}//do something
};
Person.Operation2 = function (person) {
if(person.height > 7){//do something, like call NBA
_persons.push(person);
}
};
Person.Operation3 = function (person) {
if(person.isHungOver){//do something, like call AA
_persons.slice(3,1);
}
};
所以我试图访问相同的静态字段而不将其暴露给公众,并且仍然能够使用列表对象。