1.当只写一个对象自变量的时候,JQ中扩展插件的形式
$.extend({ //扩展工具方法
fun1 : function(){
...
},
fun2 : function(){
...
}
});
//调用: $.fun1()
/*那么为什么可以这么调用呢?
$.extend() 它的this是$,因此this.fun1()==$.fun1();
**/
$.fn.extend({ //扩展JQ实例方法
fun1 : function(){
...
},
fun2 : function(){
...
}
});
//调用: $().fun1()
/*那么为什么可以这么调用呢?
$.fn.extend() 它的this是$.fn,因此this.fun1()==$().fun1();
**/
2.当写多个对象自变量的时候 , 后面的对象都是扩展到第一个对象身上
var a = {};
$.extend( a , { name : 'hello' } , { age : 30 },... );
console.log( a );//a={name:'hello', age : 30,...}
3.还可以做 浅拷贝 和 深拷贝
var a = {};
var b = { name : '张三' } ;
$.extend( a , b );
a.name = 'hi';
alert( b.name);//张三 这就是
var a = {};
var b = { name : { age : 30 } };
a.name.age = 20;
alert( b.name.age );//20 此时就会受到影响
//而深拷贝只需要在前面加个true 如下:
$.extend( true , a , b ); //此时继承是不会受到影响的!
JQ中 : 拷贝继承 : 构造函数的原型
JS : 类式继承 / 原型继承
new 构造函数 / {}
4.extend()中的属性和方法汇总
jQuery.extend({
expando : 生成唯一JQ字符串(内部)
noConflict() : 防止冲突
isReady : DOM是否加载完(内部)
readyWait : 等待多少文件的计数器(内部)
holdReady() : 推迟DOM触发
ready() : 准备DOM触发
isFunction() : 是否为函数
isArray() : 是否为数组
isWindow() : 是否为window
isNumeric() : 是否为数字
type() : 判断数据类型
isPlainObject() : 是否为对象自变量
isEmptyObject() : 是否为空的对象
error() : 抛出异常
parseHTML() : 解析节点
parseJSON() : 解析JSON
parseXML() : 解析XML
noop() : 空函数
globalEval() : 全局解析JS
camelCase() : 转驼峰(内部)
nodeName() : 是否为指定节点名(内部)
each() : 遍历集合
trim() : 去前后空格
makeArray() : 类数组转真数组
inArray() : 数组版indexOf
merge() : 合并数组
grep() : 过滤新数组
map() : 映射新数组
guid : 唯一标识符(内部)
proxy() : 改this指向
access() : 多功能值操作(内部)
now() : 当前时间
swap() : CSS交换(内部)
});