我對JavaScript還是比較新的,並且一直試圖圍繞特定的庫如何管理這種乾淨的類型和命名約定。關於Javascript層次結構行爲的困惑(給出了示例代碼)
有問題的圖書館是Telerik的劍道UI,具體我也很好奇他們是如何實現的東西,讓我想起了C#的命名空間。比如...有一個叫做ObservableArray類型,它可以通過kendo.ui.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
特別是,什麼我失去了令人難以置信的是,第二條線。它們在哪裏聲明變量(kendo)等於在窗口上定義的變量。我已經搜索了幾個小時和幾小時的高和低,並且不能在我的生活中找出這是第一次發生的地方。我一直無法在自己的代碼中重現相同的行爲。
我已經發現擴展函數可用作將對象與現有對象配對並將其選擇性附加爲可訪問成員的方式。不過那東西,這讓我發瘋。
這只是一個別名,創建了一個指向'window.kendo'的局部變量。 –