私はまだJavascriptに比較的慣れていないため、特定のライブラリがそのようなクリーンなタイプと命名規則をどのように管理しているかについて頭を悩ませようとしています.
問題のライブラリはTelerik の Kendo UIであり、具体的には、C# の名前空間を思い起こさせる何かをどのように実現しているのかに興味があります。たとえば、kendo.ui.ObservableArrayからアクセスできるObservableArrayという型があります。
私はソースコードを掘り下げましたが、何が起こっているのか本当に混乱しています. 独自の理由で多くのコードを省略しましたが、一般的な閉鎖は問題になりません。誰かがこれをどのように達成しているかを理解するのを手伝ってくれるかどうか疑問に思っていました...
(function ($, evil, undefined) {
var kendo = window.kendo = window.kendo || { cultures: {} },
extend = $.extend,
each = $.each; // more code omitted
function Class() { }
Class.extend = function (proto) {
// most of this code omitted
return subclass;
};
// more code omitted
})(jQuery, eval); // this line is really confusing me
特に、私が信じられないほど失ったのは、その 2 行目です。windowで定義された変数と等しい変数 ( kendo ) を宣言している場所。私は何時間も何時間も高低を検索しましたが、これが最初にどこで起こっているのかを一生理解することはできません. 自分のコードで同じ動作を再現できませんでした。
拡張機能は、オブジェクトを既存のオブジェクトとペアにして、アクセス可能なメンバーのように選択的にアタッチする方法として機能することがわかりました。でも、window.kendoのことは、私を夢中にさせています。