`
黄继华
  • 浏览: 47688 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

jQuery解密之----执行过程分析

 
阅读更多

javaScript 是一门基于对象的语言,然而它的对象技术的实现与其他的语言有很大的差异。

在javaScript中,定义一个类的一般采用以下这种模式:

//定义一个构造函数
testClass(param1,param2){
    this.att1=param1;
    this.att2=param2;
 ....
}

// 在prototype对象上扩展,加上相应的方法;
testClass.prototype = {
   Method1: function() {...},
   Method2: function() {...},
   ...
}
// 定义一个实例;
var test = new testClass();
  在jQuery.js中,同样也是这种模式,只不过它要复杂很多,而且它还定义了一个jQuery.extend()的静态方法来扩展类的功能,jQuery.js代码执行过程完整分析如下:
// 防止多次载入而进行jQuery对象的判断;
if ( typeof window.jQuery == "undefined" ) {
   window.undefined = window.undefined;

  // jQuery的构造函数;
  var jQuery = function( a, c ) { ... };

  // jQuery的命名空间$;
  if ( typeof $ != "undefined" ) jQuery._$ = $;
  var $ = jQuery;

  // 给jQuery的prototype增加一些基础方法和属性;
  // 其中有些方法是调用下面的扩展方法实现的;
  // 注意下面的jQuery.fn = jQuery.prototype;
   jQuery.fn = jQuery.prototype = {
     each: function( fn, args ) { ... },
     find: function( t ) { ... },
     ...
   };

  // jQuery实现继承的方法;
   jQuery.extend = jQuery.fn.extend = function( obj, prop ) {...};

  // 实现一些基础的函数,有大部分是上面调用;
   jQuery.extend({
     init: function() { ... },
     each: function( obj, fn, args ) { ... },
     find: function( t, context ) { ... },
     ...
   });

  // 浏览器版本的检测;
  new function() {
     jQuery.browser = { safari:..., opera:..., msie:..., mozilla:... };
     ...
   };

  // jQuery.macros扩展,主要用于jQuery.init(),进行jQuery的初始化;
   jQuery.macros = {
     filter: [ ... ],
     attr: { ... },
     each: { ... },
     ...
   };

  // jQuery初始化;
   jQuery.init();

  // 实现jQuery的重要方法ready();
   jQuery.fn.extend({
     ready: function( f ) { ... }
     ...
   };

  // 上面ready()方法的具体实现;
   jQuery.extend({
     ready: function() { ... },
     ...
   };

  // 对浏览器某些事件进行绑定和解绑定;
  new function() {
     ...
     jQuery.event.add( window, "load", jQuery.ready );
   };

  // 当IE浏览器关闭时,清除上面绑定的事件,防止内存泄漏;
  if ( jQuery.browser.msie ) jQuery(window).unload( ... );

  // 实现一些浏览器效果;
   jQuery.fn.extend({
     show: function( speed, callback ) { ... },
     hide: function( speed, callback ) { ... },
     ...
   };

  // 上面的一些函数具体实现;
   jQuery.extend( {...} );

  // 以下都是Ajax的实现,这里声明原型,具体实现调用下面的函数;
   jQuery.fn.extend({
     loadIfModified: function(url, params, callback ) { ... },
     ...
   };

  // 针对IE浏览器创建不同的XMLHttpRequest对象;
  if (jQuery.browser.msie && typeof XMLHttpRequest == "undefined") { ... };

  // Ajax函数的绑定;
  new function() {
    var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(",");
     ...
   };

  // Ajax函数的具体实现;
   jQuery.extend({
     get: function( url, data, callback, type, ifModified ) { ... },
     post: function( url, data, callback, type ) { ... },
     ajax: function( type, url, data, ret, ifModified ) { ... },
     ...
   }
}
分享到:
评论

相关推荐

    javascript文件解密

    3. **逆向工程**:在解密过程中,逆向工程是一项关键技能。可以使用Chrome开发者工具、Firefox的Web Console或者专用的逆向工程工具如Fiddler、Burp Suite,来分析网络请求,查看和修改运行时的JavaScript代码。 4....

    java面试总结

    - **UE**: User Experience,用户体验,指用户在使用产品过程中建立起来的主观感受。 - **UI**: User Interface,用户界面,是指软件的人机交互、操作逻辑、界面美观的整体设计。 #### 二十一、OSI七层模型 - **...

    新手学习,5个完整ASP.NET事例

    2. **数据库交互**:项目可能涉及到SQL Server或其它数据库的使用,通过ADO.NET进行数据操作,如连接数据库、执行查询、存储过程等。 3. **MVC模式**:部分项目可能采用ASP.NET MVC框架,这是一种基于模型-视图-...

    Wealsh 电影图片搜刮器

    Wealsh 工具则具备了解析和执行这些JavaScript代码的能力,从而解密出真实的图片URL。这通常需要深入理解JavaScript语法和DOM(文档对象模型)操作。 然后,我们谈谈如何分析网页源码。分析网页源码是Web抓取的第一...

    network-security-lab

    例如,前端可以使用JavaScript进行数据加密,然后在后端解密,确保数据在传输过程中不被截获。 六、安全测试与调试 在网络安全实验室中,使用JavaScript进行安全测试和调试是必不可少的环节。开发者可以利用如Burp...

    finder:一个匿名的共享内存通信网站

    4. **加密算法**:为了保护用户的隐私,Finder可能使用了某种加密算法,如AES(高级加密标准)或RSA,对传输的数据进行加密,确保即使数据在传输过程中被截获,也无法被破解。 5. **WebSocket**:可能用于实现实时...

Global site tag (gtag.js) - Google Analytics