私はjsを使って楽しんでいます。今、私はただイライラしています。上司が購入した大量のコードを jsDoc しようとしています。著者は API を提供していないので、jsDoc を使用して作成します。
残念ながら、コードは明確ではなく、1 つの js ファイルに約 10,000 行のコードが含まれています。私は過去にオブジェクトリテラルを使用しましたが、これはオブジェクトリテラルではありません。パラメータと関数はコンマで区切られていません。さらに、プロトタイプは使用されませんが、新しい演算子は使用されます。私はいくつかの本を見てきましたが、名前空間が最も近い「スタイル」のようです。これがプログラムの大まかな流れです。私の質問は例に従います。
(function () {
var global = (function () {return this; } ).call();
global.X = {};
})();
X.init = function(){
X.MyObjectA = new X.FooA();
X.MyObjectB = new X.FooB();
}
X.FooA = function() {
var storeStuff;
do stuff
.
.
function bar(){
var storeSomething;
do something
do somthing else
.
.
moreFunctions(){}
var moreVars;
.
.
}
this.anOccasionalFunctionLiteral = function(){}
.
.
}
X.FooB = function(){
Similar contents of FooB()
}
.
.
.
Continues forever...
だから私の質問は:
これは何のスタイル!? スタイルと言うとき、私は本当に FooA と FooB が何であるかを意味していると思いますか? それらはオブジェクトですか?クラス?
X.FooA または X.FooB のメンバーでない場合、ネストされた関数にどのようなタイトルを付ける必要がありますか。bar() を含むネストされた関数は、オブジェクトFooA および FooB のメソッドではないと言われました。
オブジェクト内にネストされた関数が、実際には周囲のオブジェクトのメソッドではない場合、どこからでも呼び出すことができますか? または、通常のスコープ ルールが適用されますか?
人生をより読みやすく幸せにするために、私はFooA と FooB に似たオブジェクトをコンストラクターとして分類し、コンストラクター内のメソッド (bar() など) を FooA と FooB のメソッドとして分類してきました。これは正しくないかもしれませんが、少なくとも組織化されています。助言がありますか?
ご協力いただきありがとうございます!