Я по-прежнему относительно новичок в 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), равную переменной, определенной на Окно. Я искал высоко и низко в течение часов и часов и не мог для жизни меня выяснить, где это происходит впервые. Я не смог воспроизвести такое же поведение в своем собственном коде.
Я выяснил, что функция extend служит для соединения объекта с существующим объектом и выборочно присоединяет его как доступный элемент. Но это window.kendo вещь, это сводит меня с ума.
Это просто псевдоним, создающий локальную переменную, которая указывает на 'window.kendo'. –