【发布时间】:2011-02-03 13:49:31
【问题描述】:
我最近制作了自己的 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 抱怨并警告未发送正确数量的参数。我该如何处理?
编辑
我开始怀疑这是否是一个 Idea9 问题,因为 jQuery 也有同样的问题。不过我在其他项目中似乎没有这个问题。
【问题讨论】:
-
我知道,对吧?我们都应该在汇编中编码!搞砸一切!
-
我确定这是他的个人图书馆。
-
它实际上是一个验证框架,它采用了不同的方法——通过自定义属性进行注释(在 HTML5 中有效)。实验和概念验证。
标签: javascript javascript-framework code-completion code-inspection