dialog_obj(别名):

Widget_obj(别名):

调用widget方法

$.widget("ui.dialog",dialog_obj);  //  jquery.ui.dialog.js文件第27行 

	   //widget方法位于 jquery.ui.widget.js 文件第27行 

变量赋值:

prototype=dialog_obj
base=Widget_obj

定义构造函数

	$[ namespace ][ name ] = function( options, element ) {
// allow instantiation without initializing for simple inheritance
if ( arguments.length ) {
this._createWidget( options, element );
}
};//<pre name="code" class="javascript">//以上代码位于 jquery.ui.widget.js 文件第44行

 以上代码作用:

jQuery.ui.dialog=function(){};//定义一个名为dialog类的构造函数

创建Widget_obj类的实例对象

var basePrototype = new base();

设置dialog类的原型对象

$[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
namespace: namespace,
widgetName: name,
widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
widgetBaseClass: fullName
}, prototype );

通过extern方法将basePrototype与prototype两者进行合并,两个对象中出现同名属性,

后者将前者覆盖,并将basePrototype作为返回值赋值给dialog类的原型对象,

如:

Widget_obj中_init,_create,destroy等方法被dialog_obj的_init,_create,destroy覆盖

创建dialog插件

$.widget.bridge( name, $[ namespace ][ name ] );//name="dialog" ,jQuery.ui.dialog
$.fn[ name ] =function(){};//定义dialog插件

调用

/*当我们在页面中js中调用:$("#showDiv").dialog({
width:500px;
heigh:200px;
...
});
调用的是$.fn[ name ] = function( options ) {} 这一堆
重点:
在bridge方法中,有以下一段这段
$.data( this, name, new object( options, this ) );
//this是id为showDiv的div对象,options为页面中传入的json对象,
name="dialog" ,object=jQuery.ui.dialog ,此处使用闭包 new object //创建 jQuery.ui.dialog 类的实例
构造函数:
$[ namespace ][ name ] = function( options, element ) {
// allow instantiation without initializing for simple inheritance
if ( arguments.length ) {
this._createWidget( options, element );
}
};
//调用 this._createWidget,代码例如以下: _createWidget: function( options, element ) {
// $.widget.bridge stores the plugin instance, but we do it anyway
// so that it's stored even before the _create function runs
this.element = $( element ).data( this.widgetName, this );
this.options = $.extend( true, {},
this.options,
$.metadata && $.metadata.get( element )[ this.widgetName ],
options ); var self = this;
this.element.bind( "remove." + this.widgetName, function() {
self.destroy();
}); this._create();
this._init();
}
*/

jquery的widget源代码剖析的更多相关文章

  1. jquery ui widget 源代码分析

    jquery ui 的全部组件都是基于一个简单,可重用的widget. 这个widget是jquery ui的核心部分,有用它能实现一致的API.创建有状态的插件,而无需关心插件的内部转换. $.wi ...

  2. Jquery ui widget开发

    Jquery ui 提供了一些基本的widget,但是他提供了很好的机制来创建widget.在jquery css framework中包含了基本的css样式(视觉和感觉诸如颜色,字体大小,图标等), ...

  3. 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)

    使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins) Note 这一章节的内容是基于 Scott Gonzalez 一篇博客 Building ...

  4. 转】从源代码剖析Mahout推荐引擎

    原博文出自于: http://blog.fens.me/mahout-recommend-engine/ 感谢! 从源代码剖析Mahout推荐引擎 Hadoop家族系列文章,主要介绍Hadoop家族产 ...

  5. NGINX源代码剖析 之 CPU绑定(CPU亲和性)

    作者:邹祁峰 邮箱:Qifeng.zou.job@gmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自&quo ...

  6. JQuery UI Widget Factory官方Demo

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. jQuery UI Widget(1.8.1)工作原理--转载

    先看下代码的相关注释: /*! * jQuery UI Widget 1.8.1 * * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/abo ...

  8. Qt中事件分发源代码剖析(一共8个步骤,顺序非常清楚:全局的事件过滤器,再传递给目标对象的事件过滤器,最终传递给目标对象)

    Qt中事件分发源代码剖析 Qt中事件传递顺序: 在一个应该程序中,会进入一个事件循环,接受系统产生的事件,并且进行分发,这些都是在exec中进行的.下面举例说明: 1)首先看看下面一段示例代码: in ...

  9. STL源代码剖析 读书总结

    <<STL源代码剖析>> 侯捷著 非常早就买了这本书, 一直没看, 如今在实验室师兄代码的时候发现里面使用了大量泛型编程的内容, 让我有了先看看这本书的想法. 看之前我对于泛型 ...

随机推荐

  1. golang 爬虫

    go语言,goquery,colly,chromedp,webloop等 https://www.cnblogs.com/majianguo/p/8186429.html

  2. 我的第一篇paper

    找实习虽然只为自己争取到一个秋季的绿色通道,但可喜的是,我投的几篇paper,终于中了一篇. 现在可以在英文数据库或google scholar上面搜索到自己名字,感觉很nice,研究生的心愿算是完成 ...

  3. tcp echo server libuv

    #include <stdio.h>#include <stdlib.h>#include <string.h>#include <uv.h> #def ...

  4. cmus 命令行播放器使用

    安装 sudo eopkg it cmus 启动 cmus 设置输出 :set output_plugin=pulse 导入本地音乐 :add /home/your_username/Music 查看 ...

  5. nodejs--get请求数据解析

    ---- 三种方式解析: 1.自动动手切 2.api的querystring模块 3.api的url模块

  6. 泡泡一分钟:A Multi-Position Joint Particle Filtering Method for Vehicle Localization in Urban Area

    A Multi-Position Joint Particle Filtering Method for Vehicle Localization in Urban Area 城市车辆定位的多位置联合 ...

  7. Apache的项目列表

    这里是Apache的项目列表,Apache Http Server也在这里 https://projects.apache.org/projects.html?name

  8. [No0000CE]检测非空格字符作为密码的密码强度

    Regex.Replace(pwd, "^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$", "$1$2$3$4$5").L ...

  9. Sharding-JDBC读写分离

    https://www.jianshu.com/p/8bbc8ca63037 官网文档:当当网,架构师张亮 http://shardingsphere.io/document/current/cn/m ...

  10. 静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

    package test.two; public class jingtaihanshu { int x = 3; static int  y = 4; public static void Meth ...