ximenblog 2011-11-08 22:59
浏览 168
已采纳

jQuery之某某书写模式,求解释

前些天阅读了某网友上传的一段jQuery代码,他,自己写的一个横拉级别选择的控件。Code中的jQuery书写模式感觉很优雅,自己简单的研究试写了一下,模式的大致意思理解了,但其中的一些细节地方还是不太明白, 趁空闲之余放在iteye上让大家帮我解释一下,谢谢指点
外部js文件 jQuery.plugin-model
[code="javascript"]
// JavaScript template using Windows Script Host
(function($){
$.extendPlugin = function(other){
var params = $.extend(
{
name : "JackQiu",
age : 22,
sex : "Fmale",
job : "programer",
addr : "成都高新区孵化园"
},other||{});

    var action = {
        initPeople : function(){
            var say = "Hi!, goodmoring, eveybody who is here. my name is " + params.name + ",and  i'm" + params.age + "yeas old, my job is"+params.job + "and i'm do work in " + params.addr ;
            alert(say);
        }
    };
    action.initPeople();  //初始化
}   

})(jQuery)

[/code]
HTML文件
[code="html"]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">



jQuery函数设计模式研究之选择控件


<br> $(function(){<br> $(&quot;#open&quot;).click(function(){<br> $.extendPlugin({<br> name : &quot;JackZhang&quot;,<br> age : 22,<br> sex : &quot;Fmale&quot;,<br> job : &quot;programer&quot;,<br> addr : &quot;成都高新区孵化园&quot;<br> });<br> });<br> });<br>

Hello World!


[/code]

基本模式是这样的
[code="java"]
(function($){
$.extendPlugin = function(p){
var param = $.extend({
name : "JackQiu",
age : "22",
sex : "Fmale"
},p||{});

 var action = function(){
 };

}

})(jQuery)
[/code]
我不明白的地方是: (function($){ })(jQuery) 、 p||{} 、 $.extendPlugin , 能帮我解释这三个地方的意思 ,谢谢

  • 写回答

1条回答 默认 最新

  • ayling520 2011-11-09 11:51
    关注

    [code="java"]
    // (function($){ })(jQuery)
    (function($){...})(jQuery)实际上是匿名函数
    function(arg){...}
    这就定义了一个匿名函数,参数为arg

    而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
    (function(arg){...})(param)
    这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数

    而(function($){...})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery
    var fn = function($){....};
    fn(jQuery);

    一样

    // p||{}
    这里是为了防止传一个undefined进来,而导致报错。
    而采用P||{},如果p存在,就直接让p合并,如果p不存在,就用一个{}去合并。

    // $.extendPlugin
    定义插件。
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!