1.)以下のような静的関数を呼び出し、静的関数に渡されたデータに対して追加の操作を実行する必要がある場合。ネストされた内部関数を呼び出すとクロージャが作成されますか?MakeSomethingOkはPerson.PerformSomeTypeOfOperationにのみ関連するため、私が求めているのは、MakeSomethingOkなどの操作をグローバルスコープで使用できないようにすることです。
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);
}
};
そのため、公開せずに同じ静的フィールドにアクセスしようとしていますが、それでもリストオブジェクトを操作できます。