我对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'的局部变量。 –