Saw*_*wny 9 javascript jquery frameworks
也许是一个糟糕的标题,但这是我的问题:我正在构建一个框架来了解有关javascript的更多信息.我想用""jQuery""风格.
如何在()可选的位置创建一个函数?
$("p").fadeOut(); //() is there
$.each(arr, function(k, v) {...}); //Dropped the (), but HOW?
Run Code Online (Sandbox Code Playgroud)
这是我提出的,但它不起作用:
$2DC = function(selector)
{
return new function() {
return {
circle : function()
{
//...
}
}
}
}
$2DC("#id1"); //Work
$2DC("#id2").circle(); //Work
$2DC.circle(); //DONT WORK
Run Code Online (Sandbox Code Playgroud)
Ada*_*kis 23
$实际上只是该jQuery函数的别名.你可以用以下方法调用该函数:
jQuery("p"); 要么 $("p");
但请记住,在JavaScript中,您可以将"stuff"直接附加到函数中.
function foo(){
}
foo.blah = "hi";
foo.func = function() { alert("hi"); };
foo.func(); //alerts "hi"
Run Code Online (Sandbox Code Playgroud)
这就是(概念上)jQuery each函数的定义方式.
jQuery.each = function(someArr, callback) { ...
Run Code Online (Sandbox Code Playgroud)
所以现在jQuery.each是一个可以这样调用的函数:
jQuery.each([1, 2, 3], function(i, val) {
});
Run Code Online (Sandbox Code Playgroud)
或者更熟悉
$.each([1, 2, 3], function(i, val) {
});
Run Code Online (Sandbox Code Playgroud)
因此,对于您的特定情况,支持:
$2DC.circle();
Run Code Online (Sandbox Code Playgroud)
您必须将该circle功能直接添加到$2DC:
$2DC.circle = function(){
// code
};
Run Code Online (Sandbox Code Playgroud)
函数是JavaScript中的对象.因此,它们可以用作变量,就像整数,字符串等一样.
在您的示例中,$2DC是一个返回包含circle函数的对象的函数.
$2DC.circle();不起作用circle只是返回对象的属性,而不是$2DC它自己.
在这种情况下$.each,这适用于$包含each属性.你$2DC也可以这样做.像这样:
$2DC.circle = function(){
}
Run Code Online (Sandbox Code Playgroud)
现在,$2DC.circle();将工作.因此,正如您所看到的那样,函数是对象,因此可以像其他对象一样具有属性.
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |