標籤:pes 使用者 span ping pos color 布爾 gen option
函數參數(Parameter Mapping)
多參數
當一個函數具有多個參數時,如果我們在調用該函數時傳遞一大堆參數進去,而有些參數並不是必須的,代碼看起來就有點混亂,此時可以使用匿名對象來解決。將參數作為匿名對象的屬性,然後將匿名對象作為函數的參數即可。
參數替換
函數內部可以定義一個對象,設定對象的屬性就是設定函數參數的預設值。
function aa(options) { //配置預設參數 var param = { gender: ‘man‘, age: 18 }; //extend方法本來是用於為JQuery擴充方法的,但當它接受兩個參數時,其作用就是合并使用者傳遞的參數和預設參數而非擴充方法。合并後函數使用的參數以使用者傳遞的為準,沒傳遞的參數就自動會用預設值替代。 $.extend(param, options); alert(param.age); }aa();//調用aa,不提供參數會使用預設參數aa("woman");//提供一個參數,另一個會使用預設參數aa("woman",20);//提供兩個參數,不再使用預設參數View Code
深度替換
如果函數的參數(對象)的某個屬性也是對象,是否進行全部合并需要為extend提供一個布爾值。
function aa(options) { var op = $.extend(true, { gender: "man", job: { Salary: ‘1000‘, typesWork: ‘scientist‘, age: 30 } }, options); return op;}var test=aa({ name: ‘leo‘ , job : { Salary : ‘100000‘ , typesWork : ‘Programmer‘ } });for (var i in test) { var jobObj = test[i]; if (typeof jobObj == "object") { for (var z in jobObj) { alert(z + ":" + jobObj[z]); } } else { alert(i + ":" + test[i]); }}//參數替換的結果為:{name: ‘leo‘ { gender: "man", job: { Salary: ‘100000‘, typesWork: ‘Programmer‘, age: 30 }}//如果指定第一個參數為false則結果會忽略ageView Code
Javascript - 學習總目錄
Javascript - Jquery - 函數參數