1

関数内からアクセスできる関数のプロパティを定義できることはわかっています。現在、私が解決できる唯一の構文は、2 つのステートメントを含むものです。次のことをより簡潔に表現する方法はありますか。

function myFunc() {
    // do some work
}
myFunc.myProp = 0;

文字数を減らす解決策を探しているわけではありません。これはコード ゴルフではありません。「この他の望ましいメリットを持つ関数宣言のさまざまなパターンはありますか?」という行に沿って、さらに何かを尋ねています。これはほとんどクロージャの使用方法に関するものです (答えはそこにあるのではないかと思うからです)。

ありがとう!

4

3 に答える 3

2

これは本当に、本当にすべて依存しています。プライベート変数を探している場合は、関数から関数を簡単に返すことができます。内部関数には、その親のスコープへのアクセスが含まれます。

var outer_function = (function () {
    var private_var = "secret",
        public_var  = "public",

        inner_function = function () {
            return private_var;
        };

    inner_function.public_var = public_var;
    return inner_function;
}());

outer_functionは に等しくなりinner_function、同封されたデータにアクセスできるという利点があります。(あなたが行った方法で) 内部にアタッチされたすべてのプロパティは、 のパブリック プロパティとしてアクセスできるようになりますouter

この目的のために、たとえば、クラスのコンストラクターを返すことができます。クラスのコンストラクターは、public-static プロパティを持ち、囲まれた変数は private-static プロパティとして機能し、構築する「クラス」のすべてのインスタンス間で共有されます。

于 2013-04-02T00:56:26.463 に答える
1

あなたの質問に対する正確な答えではありませんが、JavaScript 関数を定義するときに使用できるいくつかの異なる設計パターンを読みたい場合は、これは私が今まで読んだトピックで最高の記事の 1 つです。

http://www.klauskomenda.com/code/javascript-programming-patterns/

于 2013-04-02T00:59:02.663 に答える