私は熟練したC/C ++プログラマーであり、JavaScriptでFirefox拡張機能を実装する必要があります(私にとって非常に不快で直感的でない言語)。拡張機能の基本は機能していますが、すべてのグローバル変数と関数を単一の名前空間に入れて、変数名や関数名が過去/現在/将来のグローバル/ウィンドウオブジェクトに存在する可能性のある名前と競合しないようにする必要があります、または別の拡張子。
グローバル変数を使用して名前空間オブジェクトを作成するのは簡単で簡単なようで、機能します。
私が理解できないのは、関数の宣言を名前空間オブジェクトに入れて、それらすべての関数を名前空間オブジェクト宣言の下に実装する方法です。これは、かなりクリーンな構文で実行できますか...次のようなものですか?
//
// declare namespace
//
var mynamespace = {
varname00: value,
varname01: value,
varname02: value,
function: funcname00(),
function: funcname01(number),
function: funcname02(number, string),
};
//
// define functions
//
mynamespace.funcname00() {
return (23);
}
mynamespace.funcname01(number) {
return (number * number);
}
mynamespace.funcname02(number, string) {
econsole.logStringMessage("funcname02() : " + string + number);
return (number);
}
注:私の目標は、トリッキーまたは高度なものではありません---正反対です!Cプログラマーにとってできるだけ直感的に理解できるテクニックを探しています。したがって、私は次のことを好みます:
1:変数と関数のみを宣言する名前空間オブジェクトの小さな宣言を上部に作成します。
2:グローバル名前空間オブジェクトの外部に関数を実装します。
javascriptの構文規則に完全に混乱しているので、javascriptを使用すると、名前空間オブジェクト宣言内にすべての関数定義/実装を挿入できると思います。それは私にとってひどく醜いですが、それがうまくいく唯一の方法であるなら、私はそれと一緒に暮らす必要があります。しかし、「すべて」を含むような巨大なブロックを持つことは(私にとっては)非常に粗雑なので、可能であればそれを避けたいと思います。
注:これは、プログラムのスタイルに関する意見を求めるものではありません。正反対です。上記の例で示した従来のC構文/レイアウトに最も近いjavascript構文が実際に何であるかを知りたいだけです。私の例に最も近いjavascript構文/レイアウトが何らかの理由で遅い、非効率的、または機能的に問題がある場合は、実行効率についてコメントを受け付けています。ありがとう。