- 博客(49)
- 资源 (26)
- 收藏
- 关注
原创 js中的懒加载函数
测试代码1:function createXHR(){ if(typeof XMLHttpRequest!='undfined') { return new XMLHttpRequest(); }else if(typeof ActiveXObject!='undefined') { //第一次执行的时候不是string,那么就会执行if里面的代码
2015-10-29 14:25:15 2140
原创 jQuery源码分析之parseJSON方法
源码如下:var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;jQuery.parseJSON1 = function( data ) {
2015-10-28 16:27:48 3091 2
原创 jQuery源码分析之parseHTML方法
请首先阅读buildFrament以及正则表达式相关源码源码如下://将字符串转化为节点数组!通过log可以知道var rsingleTag = (/^(?:|)$/);jQuery.parseHTML1 = function( data, context, keepScripts ) { if ( !data || typeof data !== "string" ) { re
2015-10-28 15:14:51 3548
原创 jQuery源码分析之ready方法
首先阅读Deferred相关知识:测试1;$(document).ready(function(){ alert("ready");});//这种方式调用以后,还要通过triggerHander来触发文档的ready事件!所以这个例子会执行两次ready!//触发以后就要移除这个事件!因为ready事件不要多次调用!//而且该函数中的this指向的是HTMLDocument对象,
2015-10-28 12:37:18 1599
原创 jQuery源码分析之init方法
jQuery函数源码如下: jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if no
2015-10-28 10:33:17 2386
原创 javascript中的函数绑定
首先我们来看看jQuery中的proxy函数如何实现函数绑定的: proxy: function( fn, context ) { var args, proxy, tmp; //这说明:在直接调用proxy得到新的函数的时候就可以传入多余的参数,从第三个参数以后会被当作额外的参数来处理 args = slice.call( arguments, 2 ); proxy =
2015-10-27 14:11:45 690
原创 jQuery源码分析之noConflict方法
代码1://因为下面函数的返回值是jQuery对象,以后用x代替$了!只是名字不同而已!var x=$.noConflict();var $=123;//到这里$被修改为123,$被写到这里noConflict里面的代码是没有意义的!x(function() { alert($);//打印123})//上面把var $=123写在那个位置下面两行代码没有意义的!那么什么时候有意义
2015-10-25 14:02:05 860
原创 深入理解jQuery.css和jQuery.style源码
测试代码1: JS部分:$(function(){//在IE中要用驼峰写法!打印10%//alert(document.getElementById("content").currentStyle["marginRight"]);//css方法已经把100%转化为绝对值了66px//alert($("#content").css("margin-right"));//打印6
2015-10-23 11:12:31 1602
原创 jQuery源码分析之globalEval函数
源码分析:globalEval: function( data ) { if ( data && jQuery.trim( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than
2015-10-22 12:56:02 1128
原创 JS中的克隆与数据属性和访问器属性
一、数据属性和访问器属性:(1)在ECMAScript5中用Object.keys可以获取到对象的所有的可枚举属性的字符串数组,如果用于原型,那么就获取原型上面的所有的属性,如果用于实例,那么就返回实例属性。如果你想得到所有的实例属性,不管他是否可以枚举就可以用Object.getOwnPropertyNames方法,这个方法连constructor也会迭代出来!(2)Object.key
2015-10-21 12:15:09 1579
原创 js中那些方法不改变原来的数组对象
一、map方法function fuzzyPlural(single) { var result = single.replace(/o/g, 'e'); //replace也不会修改原来数组的值,这里打印[foot,goose,moose,kangaroo] //alert(single);//下面为新的数组添加了一个元素,但是我们看到在map的时候没有对添加的元素进行处理,所
2015-10-21 09:59:07 14553
原创 JS中exec,match,replace,test方法对比
正则表达式中各种方法的比较: 方法名称RegExp的exec方法String对象的match方法RegExp对象的test方法String的replace方法RegExp的exec方法(1)第0个元素是与表达式匹配的文本(2)第1个元素是与子表达式匹配的文本(3)很显然返回值是数组(4)返回数组有length,inde
2015-10-19 09:33:38 5538 1
原创 jQuery源码分析之offset,position,offsetParent方法以及源码中常见的cssHooks,swap代码
offset方法源码分析://获取当前元素相对于文档的偏移量 offset: function( options ) { //如果有参数表示设置调用对象的相应属性! if ( arguments.length ) { return options === undefined ? this : this.each(function( i ) { jQue
2015-10-18 17:36:58 2788
原创 jQuery源码分析之css方法
提前阅读:阅读css方法源码分析: css: function( name, value ) { return access( this, function( elem, name, value ) { var styles, len, map = {}, i = 0; //如果传入的第二个参数是数组对象,那么表示获取所有的属性的集合
2015-10-18 14:27:52 1833
原创 jQuery源码分析之width,height,innerWidth,innerHieght,outerWidth,outerHeight函数
11
2015-10-17 20:53:17 2386
原创 jQuery源码分析之jQuery.event.special八问
参见博客:点击打开链接jQuery.event.special源码如下:special: { load: { // Prevent triggered image.load events from bubbling to window.load //防止img元素的load事件冒泡到window的onload事件上面 noBubble: true }, foc
2015-10-17 16:45:28 2658
原创 jQuery源码分析之jQuery.event.fix方法五问
源码如下: var rformElems = /^(?:input|select|textarea)$/i, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenam
2015-10-17 16:28:46 1309 1
原创 jQuery源码分析之blur focus focusin focusout load resize scroll unload click dblclick等方法
blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu源
2015-10-17 14:30:55 1760 1
原创 jQuery源码分析之从off方法看unbind,undelegate方法
请提前阅读:点击打开链接unbind方法源码:unbind: function( types, fn ) { return this.off( types, null, fn ); }undelegate方法源码:undelegate: function( selector, types, fn ) { // ( namespace ) or ( selector, type
2015-10-17 13:52:29 2002
原创 jQuery源码分析之从on方法看bind,delegate,live,one方法一问
请提前阅读on方法源码分析:点击打开链接bind方法源码: bind: function( types, data, fn ) { return this.on( types, null, data, fn ); }delegate方法:delegate: function( selector, types, data, fn ) { return this.on( type
2015-10-17 12:31:35 1350
原创 jQuery源码分析之jQuery.event.remove方法
方法的源码分析如下:remove: function( elem, types, handler, selector, mappedTypes ) { var j, handleObj, tmp, origCount, t, events, special, handlers, type, namespaces, origType, //获取该元素的jQuery内部
2015-10-17 10:44:51 1122 1
原创 jQuery源码分析之jQuery.event.trigger及jQuery.Event十问
首先我们给出一个例子:HTML部分: JS部分:$("#n1").on("click",function(){alert("n1 ")});$("#n2").on("click",function(){alert("n2 ")});$("#n3")[0].onclick=function(){ alert("click1 invoked!"); retur
2015-10-15 15:59:29 3423 1
原创 jQuery源码分析之jQuery.event.add和jQuery.event.dispatch十一问
dispatch方法源码:var rnotwhite = (/\S+/g);var rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;var strundefined=undefined;var slice=[].slice;//当点击对象时候就会调用下面的eventHandle对象,传入的参数是Event对象!jQuery.event.dispatc
2015-10-14 17:00:54 3325
原创 jQuery源码分析之jQuery.even.handlers八问
首先给出测试用例:HTML部分: 给出JS部分代码:var handlers1=function( event, handlers ) { var sel, handleObj, matches, i, handlerQueue = [], //获取这个数组的delegateCount表示delegate了几个对象 delegateC
2015-10-14 15:20:43 932
原创 jQuery源码分析之buildFragment方法和clone方法
buildFragment方法源码:var rxhtmlTag = /]*)\/>/gi;var strundefined=undefined;var rtagName = /<([\w:]+)/;var rtbody = /<tbody/i;var rhtml = /<|&#?\w+;/;var rscriptType = /^$|\/(?:java|ecma)script/i;
2015-10-13 18:38:17 1836
原创 jQuery源码分析之prop和removeProp方法
DOM对象实例方法prop源码: prop: function( name, value ) { return access( this, jQuery.prop, name, value, arguments.length > 1 ); }如果传入一个参数,那么这时候value是undefined,第五个参数是false,为了方便我们还是附上access源码:如果是获取属性(val
2015-10-13 15:10:44 1638
原创 jQuery源码分析之removeAttr方法和attr方法
jQuery.removeAttr函数源码测试:var rnotwhite = (/\S+/g); var propFix ={ "for": "htmlFor", "class": "className" }; attrHandle = jQuery.expr.attrHandle; ruseDefault = /^(?:checked|selected)$/i; get
2015-10-13 14:05:21 2800
转载 jQuery support 源码解读
jquery support主要是检测浏览器兼容性,支持力度的方法,用于展示不同浏览器各自特性和bug的属性集合。作为一个静态成员,提供给jquery内部函数,告诉他们某些功能是否能用。避免了以往通过检测浏览器版本做修改。 可以直接调用jQuery.support来检测某些功能,通过查看其源代码我们可以更深入的了解各个浏览器之间的区别。特别是针对IE,还有webkit的bug,都能让我们受益
2015-10-13 10:22:55 674 1
原创 jQuery源码分析之wrap,wrapInner,wrapAll,unwrap方法
首先我们回忆一下each实例方法的用法:$(document).ready(function(){ $("button").click(function(){ $("li").each(function(i,elem){ //首先这个each实例函数中,第一个参数是调用对象下标,第二个参数是调用对象DOM元素 //this指的是调用对象的DOM元素!
2015-10-12 13:51:48 1271
原创 jQuery源码分析之remove和detach方法的区别
请提前阅读:点击打开链接detach源码分析:detach: function( selector ) { return this.remove( selector, true ); }可见detach内部调用的是remove函数,同时把selector传入remove方法,但是第二个参数是true,所以remove方法中的keepData是true表示不会调用里面的cleanDa
2015-10-12 10:56:49 1113
原创 jQuery源码分析之empty和remove方法四问
测试代码1:把id为first下面所有的子元素移除 $(document).ready(function(){ var ps=document.getElementById("first"); while(ps.firstChild) { ps.removeChild(ps.
2015-10-12 09:59:24 1865 1
原创 jQuery源码分析之appendTo,prependTo,insertBefore,insertAfter,replaceWith函数
源码如下:请提前阅读阅读var deletedIds = [];var push = deletedIds.push;jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith"}, f
2015-10-12 09:19:13 1196
原创 domManip之prepend,append,before,after,replaceWith方法
prepend源码解析(domManip参见博客打开):CodePlayer var $n1 = $("#n1");//将一个strong标记追加到n1内部的起始位置$n1.prepend( '追加内容' );alert($("#n1")[0].firstChild.id);//打印test,说明prepend是在第一个子元素前面插入的prepend: funct
2015-10-11 16:09:30 849
原创 jQuery源码测试笔记之domManip函数
代码1:domManip调用的其它函数和正则表达式:var concat=[].concat;var strundefined=undefined;var rscriptTypeMasked = /^true\/(.*)/;var rscriptType = /^$|\/(?:java|ecma)script/i;var rcleanScript = /^\s*\s*$/g;//jQue
2015-10-11 13:10:00 773 1
原创 jQuery的access方法测试笔记
测试代码1值access与普通对象的关系:1111111111var access1 = jQuery.access1 = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, length = elems.length, //第三个参数是可选的,通过它走不同的逻辑 bulk =
2015-10-10 18:57:03 1999 2
原创 jQuery的Deferred对象测试笔记以及源码分析
官方地址见:点击打开链接 测试代码1:(deferred.always)always参数可以是一个function对象也可以是一个function数组,当Deferred对象resolve或者reject那么该函数会被调用。因为deferred.always()方法返回一个Deferred对象,所以其它的Deferred的方法可以继续调用,也包括继续调用always方法,当Deferred
2015-10-09 14:27:52 1646 1
原创 jQuery.Callbacks的测试代码总结
//jQuery.Callbacks函数 //调用方式:jQuery.Callbacks("once memory").add //详见:点击打开链接 /*callbacks里面添加了两次f函数,但是fire()时候只会调用一次,也就是由于两次添加的函数相同,那么会检测到重复的调用。同时jQuery.Callbacks1("unique")调用时候会把options["unique
2015-10-09 10:10:07 816 1
原创 jQuery.when()方法测试笔记及源码分析
/* 测试代码1:(如果传入when的不是Deferred也不是Promise对象,那么马上执行done方法,done方法会被传入初始参数也就是传入when方法的参数同时fail方法永远不会被执行,因为当传入的不是Deferred也不是Promise时候,会被当作resolved所以不会是rejected)$.when( { testing: 123 } ).done
2015-10-09 09:15:49 2033 1
原创 jQuery源码分析之closest,has,addBack,addSelf,add方法
closest源码分析: //调用方式:jQueryObject.closest( expr [, context ] )closest: function( selectors, context ) {var cur,i = 0,//选择器选择对象的个数l = this.length,//保存结果集合matched = [],//var rneed
2015-10-07 19:42:11 1385
在线评论数据集 论文全文 字段解释
2017-04-12
CMD规范之seajs
2015-12-06
HTML5离线存储
2015-11-17
javascript编程宝典第二版源码
2015-07-06
网络爬虫代码
2015-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人