重点掌握以下这些方法(可以手写代码):
1.深复制与浅复制
jQuery.extend
2.类型判断相关方法
jQuery.type,jQuery.isFunction,jQuery.isArray,jQuery.isWindow,jQuery.isNumberic,jQuery.isPlainObject,jQuery.isArrayLike
3.数组相关方法
jQuery.each,jQuery.map,jQuery.grep
4.转驼峰的实现
jQuery.camelCase
一、jQuery.extend/jQuery.fn.extend
//可接受的参数类型如下:jQuery.extend([deep],target,object1,[objectN]) jQuery.extend = jQuery.fn.extend = function() { var target = arguments[0] || {}, //指向目标对象 deep = false, //是否进行深度复制 i = 1, //表示源对象的起始下标 length = arguments.length, //表示参数个数; options, name, src, copy, copyIsArray; //options指向某个源对象,name指向源对象的某个属性名,src目标对象某个属性的原始值,copy某个源对象的某个属性的值,copyIsArray指示变量copy是否为数组 //首先进行参数修正 if (typeof target === 'boolean') { deep = target; target = arguments[1] || {}; i = 2; } //此时target就是jQuery或jQuery.fn if (i === length) { target = this; i--; } //处理target是字符串或者其他情形,这在深度复制中可能出现 // if(typeof target!=='object'||!jQuery.isFunction(target)){ // target={}; // } for (i; i < length; i++) { options = arguments[i]; for (name in options) { src = target[name]; copy = options[name]; if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && jQuery.isArray(src) ? src : []; } else { clone = src && jQuery.isPlainObject(src) ? src : {}; } //递归调用 target[name] = jQuery.extend(deep, clone, copy); } else { target[name] = copy; } } } return target; };