1. jquery无new的构造函数。无new的构造函数是怎么实现的。比如我们一般这么用jQuery。 $(".test").text(); 但是我们一般是这么写的。 var test = new $(".test"); test.text(); 那么jquery的内部是怎么实现的呢? 主要的妙处在于 jQuery.fn.init.prototype = jQuery.fn; 1) 首先 $("XXX")的实例化方式 内部时调用了 new jQuery.fn.init();所以构造实例其实是交给 jquery.fn.init() 去完成的。 2) jQ...
1、使用了jquery,但是觉得了解 jquery的源码才能 更容易知道怎么使用,所以在网上找了一些 jquery的源码 笔记 还有看了 妙味课堂 的 一部分视频,现在写一些总结。 一、 jquery的 总体架构:1、jquery 有良好的对外接口, window.jQuery = window.$ = jQuery;现在 是 通过jquery 2.0.3 源码的分析: (21,94) 21—94行, 定义了一些变量和函数, jQuery = function(); (96,283) 96—283行, 给 jQuery对象,添加一些属性和...
最近几天一直在研究jquery源码,由于水平太低看得昏头转向。本来理解的也不是很深刻,下面就用自己的想法来说下jquery是如何定义构造函数初始化的。如果有什么不对的地方,希望个位高手指出。 一般写构造函数如下function Aaa(){}
Aaa.prototype.init = function(){};
Aaa.prototype.css = function(){};var a1 = new Aaa();
a1.init(); //初始化
a1.css(); jQuery写法如下function jQuery(){returnnew jQuery.prototype.ini...
下面对最后这几个方法进行讲解。 guid():唯一表示(内部) proxy():改变this指向 access(): 多功能值操作 now():当前时间 swap():css交换(内部) guid:这个属性是对事件进行控制的,例如每次对dom元素进行绑定事件的时候,会通过这个属性进行绑定,这个属性每次自增,产生一个唯一的标示,所以对dom元素进行事件解绑等操作的时候,通过这个属性就可以找到。源码:// A global GUID counter for objectsguid: 1,p...
jQuery源码分析-03构造jQuery对象-源码结构和核心函数jQuery.fn和jQuery.prototype区别 原文:http://www.cnblogs.com/littlewriter/p/6391445.html
本节说一下DOM操作模块里的包裹元素子模块,该模块可将当前匹配的元素替换指定的DOM元素,有如下方法:wrap(html) ;在每个匹配元素的外层添加一层DOM元素 ;该方法会遍历匹配元素集合,在每个元素上调用.wrapAll()方法 ;不同于wrapAll()的是该方法会在每个匹配元素外面都套一层html元素。wrapAll(html) ;会将html转化为一个DOM节点并放在第一个匹配元素的前面,再把其...
回调对象Callbacks回调对象Callbacks就是用来管理回调函数队列的。参数说明它提供几个便捷的处理参数 - once: 确保这个回调列表只执行一次 - memory: 保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 - unique: 确保一次只能添加一个回调(所以在列表中没有重复的回调). - stopOnFalse: 当一个回调返回false 时中断调用 once和stopOnFalse作用于fire memory和unique作用于add once在源码中的实现:// 以给定的...
这一篇主要总结一下jQuery这个js在引入的时候做的一些初始化工作第一句window.undefined=window.undefined;是为了兼容低版本的IE而写的因为在低版本的IE中undefined不是window对象下的属性因此window.undefined就是undefined根据=运算符右结核性的特征,=右边的window.undefined就是undefined既然window没有undefined属性因此左边其实可以理解为在window下面扩展一个undefined属性这个值就是undefined接下来if ( $ ){jQuery._$ = $...
最近在做日志统计程序,发现对方的程序是在Jquery基础上进行开发的,而公司的网站的框架是prototype。而且我也早就想了解一下Jquery源码,故决定研究Jquery源码,模拟它的方法 Jquery这么普及,必有它过人之处,通过开源代码进行学习,是个不错的学习方法啊! 以下是我模拟的方法,我尽量简化方法。 定义对象C(类似于jquery的$方法)——这个也是jquery设计非常巧妙的地方 复制代码 代码如下:(function(){ var _cQuery = window.cQu...
1//扩展工具函数 2jQuery.extend({3// Unique for each copy of jQuery on the page 4 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),5 6// Assume jQuery is ready without the ready module 7 isReady: true,8 9 error: function( msg ) {10thrownew Error( msg );11 },12 13 noop: function() {},14 15// See test/unit/core.js for details concerning isFunction. 16// Sin...
(1)、attr attr: function(elem, name, value){var fix = {"for": "htmlFor","class": "className","float": "cssFloat",innerHTML: "innerHTML",className: "className"};if ( fix[name] ) {if ( value != undefined ) elem[fix[name]] = value;return elem[fix[name]];} elseif ( elem.getAttribute ) {if ( value != undefined ) elem.setAttribute( name, value );return elem.getAttribute( name, 2 );} else {name = na...
提起JS中的继承很多”大神“们都会提起call,apply,单纯的对象赋值继承,以及原型链继承等众多的方式以及它们的不足之处,而且还会不时的把一些面向对象的设计模式”团团“的带出来,而当被问道JQuery的extend却很少人真正去实际了解它的”秘密“。其实JQuery的继承方式就是一种拷贝方式的继承,但是在这里还有点小小的“猫腻”需要大家了解下。那么马上看这段代码:var a1 = { prototype1: { i: "1" } };var b1 = { prototype1: { ...
JQuery源码解读JQ的一些扩展工具方法( 妙味讲堂 - 视频笔记 - 第四部分)1、parseJSON()JSON.parse() // 解析字符串类型的JSON2、eval() //解析任何格式JSON,性能差3、parseXML() // 字符串转DOM对象// 源码实现
parseXML: function(data) {var xml, tmp;if (!data || typeof data !== "string") {return null;//只能解析字符串类型}try {tmp = new DOMParser(); //IE9+xml = tmp.parseFromString(data, "text/xml");}catch (...
/*!* jQuery JavaScript Library v2.1.1* http://jquery.com/** Includes Sizzle.js* http://sizzlejs.com/** Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors* Released under the MIT license* http://jquery.org/license** Date: 2014-05-01T17:11Z*/(function( global, factory ) {if ( typeof module === "object" && typeof module.exports === "object" ) {// For CommonJS and CommonJS-like enviro...
jQuery中要扩展方法或者属性都是通过extend方法实现的。所谓的jQuery插件也是通过extend方法实现的。jQuery.extend扩展的是工具方法,也就是静态方法。jQuery.fn.extend扩展的是实例方法。当只传入一个对象的时候,里面的方法和属性是扩展到this上的。比如:$.extend( { aaa:function(){}, bbb:function(){} } ) ,这里的this是$,所以用这种形式$.aaa()调用。$.fn.extend( { aaa:function(){}, bbb:function(){}...