Js 獲取當(dāng)前函數(shù)參數(shù)對(duì)象的實(shí)現(xiàn)代碼
有時(shí)候在封裝控件的時(shí)候在很多 Js 函數(shù)中需要獲取傳入的直接參數(shù)或者對(duì)象參數(shù),那么我們就需要每次都去判斷第一個(gè)對(duì)象,所以為了方便在此封裝一個(gè)函數(shù),來獲取當(dāng)前函數(shù)中的參數(shù)值:
/*------------------------------------------ * 清除字符串兩端空格,包含換行符、制表符 *------------------------------------------*/ String.prototype.Trim = function () { return this.replace(/(^[\s\n\t]+|[\s\n\t]+$)/g, ""); } /*---------------------------------------- * 獲取當(dāng)前函數(shù)的參數(shù)對(duì)象 *---------------------------------------- * diffCase 是否區(qū)分大小寫,默認(rèn) false *----------------------------------------*/ function GetArgs(diffCase) { //返回參數(shù)對(duì)象 var result = new Object(); //獲取調(diào)用函數(shù) var caller = arguments.callee.caller; if (caller == null || caller.arguments.length == 0) return result; //獲取函數(shù)的參數(shù)集合 var matchs = caller.toString().match(/\s*function[\w\s]*\(([\w\s,]*)\)/); if (matchs == null) return result; var argArray = matchs[1].split(","); //獲取參數(shù)對(duì)象 var params = caller.arguments[0]; var index = typeof (params) == "object" ? 1 : 0; if (index == 1) { for (var p in params) { for (var i = 0; i < argArray.length; i++) { var arg = argArray[i].Trim(); if (diffCase) { if (arg == p) { result[arg] = params[p]; break; } } else { if (arg.toLocaleLowerCase() == p.toLocaleLowerCase()) { result[arg] = params[p]; break; } } } } } //多個(gè)參數(shù)將第一個(gè)后面的參數(shù)覆蓋對(duì)象傳入的參數(shù) for (var i = index; i < argArray.length && i < caller.arguments.length; i++) result[argArray[i].Trim()] = caller.arguments[i]; return result; }
調(diào)用示例:
//測(cè)試函數(shù) function Test(name, age) { //獲取參數(shù)對(duì)象 var args = GetArgs(); alert("姓名:" + args.name + ",年齡:" + args.age); } //調(diào)用測(cè)試 Test("張三", 25); Test({ name: "李四", age: 30 }); Test({ name: "王五" }, 18);
- js實(shí)現(xiàn)輪播圖的兩種方式(構(gòu)造函數(shù)、面向?qū)ο?
- js eval函數(shù)使用,js對(duì)象和字符串互轉(zhuǎn)實(shí)例
- js中的eval()函數(shù)把含有轉(zhuǎn)義字符的字符串轉(zhuǎn)換成Object對(duì)象的方法
- 關(guān)于js函數(shù)解釋(包括內(nèi)嵌,對(duì)象等)
- JavaScript對(duì)象數(shù)組排序函數(shù)及六個(gè)用法
- js面向?qū)ο笾R妱?chuàng)建對(duì)象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
- JS中的函數(shù)與對(duì)象的創(chuàng)建方式
相關(guān)文章
JavaScript進(jìn)階之前端文件上傳和下載示例詳解
這篇文章主要為大家介紹了JavaScript進(jìn)階之前端文件上傳和下載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09JavaScript調(diào)試的多個(gè)必備小Tips
這篇文章主要給大家介紹了關(guān)于JavaScript調(diào)試的多個(gè)必備小Tips,文章給出了詳細(xì)的介紹與示例代碼,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)學(xué)習(xí)吧。2017-01-01Bootstrap Tree View簡(jiǎn)單而優(yōu)雅的樹結(jié)構(gòu)組件實(shí)例解析
本文通過實(shí)例代碼給大家介紹了Bootstrap Tree View簡(jiǎn)單而優(yōu)雅的樹結(jié)構(gòu)組件,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06JavaScript數(shù)據(jù)類型及相互間的轉(zhuǎn)換規(guī)則
這篇文章主要介紹了JavaScript數(shù)據(jù)類型及相互間的轉(zhuǎn)換規(guī)則,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09簡(jiǎn)單js代碼實(shí)現(xiàn)selece二級(jí)聯(lián)動(dòng)(推薦)
這篇文章主要介紹了簡(jiǎn)單js代碼實(shí)現(xiàn)selece二級(jí)聯(lián)動(dòng)的簡(jiǎn)單實(shí)例。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02javascript之DIV拖動(dòng)類 支持在FF下拖動(dòng),調(diào)用簡(jiǎn)單
javascript之DIV拖動(dòng)類 支持在FF下拖動(dòng),調(diào)用簡(jiǎn)單...2007-08-08