2

backboneでは、イベントを保存するときに、この規則を使用してプライベート変数を示します。

_events

ただし、ご存知のように、このプロパティは非公開ではありません。本当にプライベートにするために、このようなことをしてみませんか?

var Events = (function () {
    var publik = {},
        events = {},      // private object literal
        eventsApi,        // private method
        triggerEvents;    // private method

    // define publik Events methods here

    return publik;
})();

_.extend(Backbone, Events);
4

1 に答える 1

6

それ以外の場合は、むしろ慣例の問題です。

しきたりは、人々はそれを難し​​くしないということです。簡単な関数を使用し、IIFE を使用せず、どうしても必要な場合は「プライベート」変数をいじらせます。

このライブラリが変数を隠していたために、ライブラリのコードを変更する必要があったことはありますか? まぁ、こうなると本当に辛いですよね。変数が「慣例により非公開」であっても、変数を使用できることは真の利点です。

参考までに、[Common Lisp][0] はデフォルトですべての変数を非公開にしています。一部を手動でエクスポートできます。ただし、特別な構文を使用して常にプライベート変数にアクセスすることもできます。これにより、コードがすべきでないことを行っていること (「未定義の動作」を台無しにすること) が明確になります。

[0]: おそらく最も強力な言語ですが、1 つの Javascript が基になっていることは明らかです。

于 2013-03-19T21:13:14.180 に答える