2

私は仕事で昨年かそこらの間、特定のスタイルで JavaScript を書いていました (以下の例を参照)。名前があると思いますが、何と呼べばいいのかわからないと、助けを見つけるのが本当に難しいことの1つです.

var Page =
{
    DoStuff: function ()
    {
        // stuff gets done here
    },

    Save: function ()
    {
        // save logic
    }

};

上記の js は、次のように呼び出すことができます。

Page.Save();

関数の名前空間を一種の名前空間にすることができるという意味で、これを使用してきました。そのため、すべてのページに Save 関数がある場合、それらはすべて同じ名前で呼び出すことができますが、競合することはありません。

これが以前に尋ねられた場合は申し訳ありませんが、私が言ったように、使用するキーワードがよくわからない場合、答えを見つけるのは本当に難しい.

更新 迅速な対応をありがとうございます。誰かが助けてくれるなら、これについてもう1つ質問があります。私は過去に一種の関数オーバーロードを試みたので、次のようなことができました:

var Page = 
{
    DoStuff: function ()
    {
        // do stuff
    },

    DoStuff: function (name, type)
    {
        // do stuff with the name and type params
    }
};

しかし、関数は互いにオーバーライドしてしまうため、最後に読み込まれた関数が他の関数を置き換え、両方を呼び出すことができず、1 つの関数だけになってしまいます。

Page.DoStuff();
Page.DoStuff('lews0r', 'newbie');

この名前空間/モジュール構造で関数をオーバーロードすることさえ可能ですか? それとも、2 番目の関数に Page.DoStuff2() のような別の名前を付けることに固執する必要がありますか (そして、これまでで最高の関数名に対する賞は...)。

4

1 に答える 1

1

通常、人々はこれらを「モジュール」と呼ぶと思います。「名前空間」も適切な用語です。すべての関数を製品名、ライブラリ名、または会社名のいずれかに含めることで、グローバル名前空間にあまりにも多くのラベルを配置することを避けることができます。

Nadh はそれを「オブジェクト指向プログラミング」と提案しました。一般的な違いは、オブジェクト指向プログラミングでは、オブジェクトではなくクラスを定義することだと思います。ページのインスタンスをいくつでも作成し、場合によっては少し変更する方法をプログラムに指示します。一部の Javascript ライブラリでは、これを行うためのさまざまな方法が提供されています。しかし、Pageを「これらの機能を持つオブジェクト」として直接割り当てる場合、私はそれを「モジュール」と考える傾向があります。これは、Python のような言語がどのように機能する傾向があるかについての概算です。

ECMAScript (Javascript) の当初の設計者は、最終的にどのように使用されるかを完全に予測していなかったと個人的に考えているため、これらの慣行のほとんどに正式な名前が付けられていない可能性があります。人々は非常に独創的になりました。

于 2013-07-25T15:16:32.333 に答える