注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

jquery javascript中的extend  

2013-04-20 01:37:04|  分类: js |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      javascript是面向对象的语言,这个没有仔细去体会。关于javascript的继承在下面有讲
      貌似很高深,我就不具体讲了。主要是prototype这个属性,可以为多个类实例定义共享的属性。还可以动态的为对象添加新的属性。
      在jquery中也有prototype,jQuery.fn就是 jQuery.prototype 的别名。$.extend与$.fn.extend的区别就是前者是针对类(jQuery就是一个类)的,后者是针对对象的。
$.extend({   
  add:function(){...;}   
});
使用的时候是这样:$.add()
$.fn.extend({
     add:function(){...;}
}); 
则是这样使用的:$('选择器').add()

      jquery 中的extend(),它的api中已经解释清楚了
jQuery.extend( target, [ object1 ], [ objectN ] ) 返回: Object

合并两个或更多的对象的内容汇集成到第一个对象。

version added: 1.0
jQuery.extend( target, [ object1 ], [ objectN ] )
target 一个对象,如果附加的对象被传递给这个方法将那么它将接收新的属性,如果它是唯一的参数将扩展jQuery的命名空间。
object1一个对象,它包含额外的属性合并到第一个参数
objectN包含额外的属性合并到第一个参数

version added: 1.1.4
jQuery.extend( [ deep ], target, object1, [ objectN ] )
deep如果是true,合并成为递归(又叫做深拷贝)。
target对象扩展。这将接收新的属性。
object1一个对象,它包含额外的属性合并到第一个参数
objectN包含额外的属性合并到第一个参数
当我们提供两个或多个对象给$.extend(),对象的所有属性都添加到目标对象。

如果只有一个参数提供给$.extend(),这意味着目标参数被省略。在这种情况下,jQuery对象本身被默认为目标。这样,我们可以在jQuery的命名空间下添加新的功能。这可用于插件作者希望添加新的方法到jQuery。

请记住,目标对象(第一个参数)将被修改,也将通过$.extend()返回。然而,如果我们想保留原对象,我们可以通过传递一个空对象作为目标:

var object = $.extend({}, object1, object2);
通过$.extend()合并执行默认不是递归的;如果第一个对象的属性本身是一个对象或数组,这将是完全用第二个对象相同的key重写一个属性。这些值是不合并。这可以看到在下面的例子通过检查香蕉的值。然而,true为第一个函数参数,对象将被递归合并。

未定义的属性不会被复制。然而,从对象原型的继承属性将被复制。

Examples:
Example: Merge two objects, modifying the first.


var object1 = {
  apple: 0,
  banana: {weight: 52, price: 100},
  cherry: 97
};
var object2 = {
  banana: {price: 200},
  durian: 100
};

$.extend(object1, object2);
Result:

object1 === {apple: 0, banana: {price: 200}, cherry: 97, durian: 100}
Example: Merge two objects recursively, modifying the first.


var object1 = {
  apple: 0,
  banana: {weight: 52, price: 100},
  cherry: 97
};
var object2 = {
  banana: {price: 200},
  lime: 100
};

$.extend(true, object1, object2);
Result:

object1 === {apple: 0, banana: {weight: 52, price: 200}, cherry: 97, lime: 100}
Example: Merge settings and options, modifying settings.

var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
Result:

settings == { validate: true, limit: 5, name: "bar" }
Example: Merge defaults and options, without modifying the defaults. This is a common plugin development pattern.

var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = $.extend(empty, defaults, options);
Result:

settings == { validate: true, limit: 5, name: "bar" }
empty == { validate: true, limit: 5, name: "bar" }
  评论这张
 
阅读(1511)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018