惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
博客园 - 叶小钗
雷峰网
雷峰网
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
量子位

博客园 - 雨中漫步的太阳

基于跨数据库的事务的一个讨论,希望参考下大家的意见 Wave帮助、技巧、术语集 从IBatis2.X 移植到IBatis3.0 sqlMapConfig and sqlMap XML 配置文件升级说明 - 雨中漫步的太阳 .NET正则基础——.NET正则类及方法应用[转载] 按钮单击ThickBox弹出窗口 推荐一款界面设计工具 Balsamiq Mockups qq2009 好像和金山词霸屏幕取词有冲突 错误 1 error C2664: 'TextOutW' : cannot convert parameter 4 from 'const char [5]' to 'LPCWSTR' 也发一个有道第二题的算法,练练脑子 使用commons-logging和log4j记录日志[转载] 动手改造Ibatis,使其支持文件系统存储数据列 之 看我如何给ResultMap增加属性 发一个 Window Live Writer 插件 SyntaxHighlight 代码样式 700万数据随机取10条仅用不到10ms? 动手改造Ibatis,使其支持文件系统存储数据列 之 源码下载编译和SqlMapConfig解析 IBAtisHelper 源代码放出,需要的下载吧 动手改造Ibatis,使其支持文件系统存储数据列 预览 大家讨论下,结合文件系统,给数据库瘦身方案的可行性 Ibatis SelectKey iBatis resultMap groupBy属性使用心得[转载]
jQuery.extend的用法 转载
雨中漫步的太阳 · 2009-09-04 · via 博客园 - 雨中漫步的太阳

有網友提問,看不太懂jQuery.extend的用法,本想在留言裡回覆,但寫著寫著,發現要說到淺顯白話,還真得花些篇幅,索性另起一篇,解釋得更詳細點。

以jQuery.extend(objA, objB)為例,你可以想像成objA與objB各有一些屬性(方法也會比照處理,在此只提屬性),extend()會將objB有而objA沒有的屬性加到objA裡,如果objB裡的某個屬性,objA裡剛好也有同名的屬性,則會用objB的屬性值去覆寫objA原有的屬性。objA最後就是整合結果,或者也可以由var objC = jQuery.extend(objA, objB)取得整合結果(objA == objC)。

例如以下的程式碼,大家可以丟到Mini jQuery Lab跑一下,馬上就可以驗證jQuery.extend的效果:

排版顯示純文字

var objA = { speed:"slow" };
var objB = { speed:"fast", power:"hard" };
var objC = jQuery.extend( objA, objB );
document.write("<dt>objA");
for (var p in objA) { document.write("<dd>" + p + "->" + objA[p]); }
document.write("<dt>objC");
for (var p in objC) { document.write("<dd>" + p + "->" + objC[p]); }

所得結果objA與objC的內容相同,都有兩個屬性speed:"fast"(被覆寫), power:"hard"(新加的)。

jQuery.extend可以支援多個物件屬性/方法的整併,並不限於兩個。例如: jQuery.extend(objA, objB, objC),objB, objC多出的屬性都會加到objA裡,如果有objA已有同名屬性,則會用objC/objB裡的屬性值覆寫之,若objB, objC都用同名屬性,則會排在後方的objC為準(後令壓前令)。

jQuery.extend的最常見的用途是用來處理Plugin或函數的傳入參數,比如函數會用到的參數有10個,但大部分情況呼叫時只需要指定其中一兩個,其餘的用預設值即可。於是我們可以在函數中宣告一個預設值物件objDefault,裡面已有10個屬性,呼叫函數時則傳入objOption,裡面只放入一兩個要變更的屬性值,經過var objSetting = jQuery.extend(objDefault, objOption)之後,我們得到10個"有指定用指定值,沒指定用預設值"的屬性供後續使用。舉個例子:

排版顯示純文字

function addDiv(options) {
    var defaults = { 
        border: "solid 1px black",
        backgroundColor: "#cccccc",
        width: "200px", height: "50px",
    margin: "10px"
    };
    var settings = $.extend(defaults, options);
    $("<div></div>").css(settings).appendTo("body");
}
addDiv({ width: "400px" });
addDiv({ backgroundColor: "orange", height: "100px" });

希望這樣的說明夠清楚。

Follow suyuan19 on Twitter