Недавно я сделал свою собственную библиотеку Javascript, и я первоначально использовал следующую закономерность:Написание библиотеки Javascript, который кода завершение и кода инспекция дружественной
var myLibrary = (function() {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
Проблема с этим состоит в том, что я не могу на самом деле используйте код завершения, потому что IDE не знает о свойствах, возвращаемых функцией литерала (кстати, я использую IntelliJ IDEA 9).
Я посмотрел на JQuery кода и пытался это сделать:
(function(window, undefined) {
var myLibrary = (function() {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
window.myLibrary = myLibrary;
}(window));
Я попытался это, но теперь у меня есть другая проблема. IDE на самом деле не набирает myLibrary
.
Путь я решить эту проблему сейчас так:
var myLibrary = {
func: function() { },
func2: function() { },
prop: ""
};
myLibrary = (function() {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
Но это, кажется, своего рода неуклюжим, и я не могу точно понять, как JQuery делает это. Еще один вопрос: как обрабатывать функции с произвольным числом параметров.
Например, jQuery.bind
может принимать 2 или 3 параметра, а IDE, похоже, не жалуется. Я попытался сделать то же самое с моей библиотекой, где функция может принимать 0 аргументов или 1 аргумент. Тем не менее, IDE жалуется и предупреждает, что правильное количество параметров не отправляется. Как мне это сделать?
EDIT
Я начинаю задаваться вопросом, является ли это проблема, потому что Idea9 JQuery имеет те же проблемы. Однако у меня, похоже, нет этой проблемы в других проектах.
Я знаю, правильно? Мы все должны кодироваться в сборке! Вверните все остальное! –
Я уверен, что это его личная библиотека. – mwilcox
На самом деле это основа проверки, которая использует другой подход - аннотации через пользовательские атрибуты (которые действительны в HTML5). Экспериментальная и доказательная концепция. –