最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

別了 JavaScript中的isXX系列

 更新時間:2012年08月01日 22:38:29   作者:  
我們很容易被漂亮的代碼吸引,也不知不覺的在自己的代碼庫中加入這些。卻沒有冷靜的想過它們的優(yōu)劣。這不,我就收集了一系列形如 是否為……? 的判斷的boolean函數(shù)
復(fù)制代碼 代碼如下:

isNull: function(a){
return a === null;
},
isUndefined: function(a){
return a === undefined;
},
isNumber: function(a){
return typeof a === 'number';
},
isString: function(a){
return typeof a === 'string';
},
isBoolean: function(a){
return typeof a === 'boolean';
},
isPrimitive: function(b){
var a = typeof b;
return !!(b === undefined || b === null || a == 'boolean' || a == 'number' || a == 'string');
},
isArray: function(a){
return proto_obj.toString.call(a) === '[object Array]';
},
isFunction: function(a){
return proto_obj.toString.call(a) === '[object Function]';
},
isPlainObject: function(o){
if (!o || o === win || o === doc || o === doc.body) {
return false;
}
return 'isPrototypeOf' in o && proto_obj.toString.call(o) === '[object Object]';
},
isWindow: function(o){
return o && typeof o === 'object' && 'setInterval' in o;
},
isEmptyObject: function(o){
for(var a in o) {
return false;
}
return true;
}

以上isXX系列中,isUndefined在類庫中用的最多。如判斷是否傳入了某個參數(shù),判斷對象是否擁有某個屬性等等。但這個函數(shù)是不必存在,我已將其移除。理由如下

1,isUndefined 與 使用全等(===)或typeof 多了一層函數(shù)調(diào)用。很明顯多一層函數(shù)調(diào)用比直接使用原生的運算符效率會低(雖然有些微不足道),但如果isUndefined調(diào)用次數(shù)很多如上萬次還是很明顯的。我曾經(jīng)在郵箱框架中加入了該函數(shù),調(diào)用次數(shù)有4000多次,從性能分析工具看占用了近1%的時間。僅僅一個判斷占1%的調(diào)用時間還是很可怕的。當(dāng)然,郵箱框架內(nèi)的isUndefined處在多層閉包的頂層,訪問其也會占用較多時間。如果這一條還不足以讓你放棄isUndefined,請看下面。
2,函數(shù)從一定程度上是對一些代碼的封裝,抽象。是組織良好代碼的方式之一,且有利于降低代碼的復(fù)雜性。但isNull/isUndefined/isBoolean/isNumber/isString函數(shù)內(nèi)僅有一句,抽象層次很低。因此完全不必封裝而提取出一個函數(shù)。
3,isUndefined(a) 與 a === undefined相比并不會節(jié)省幾個字節(jié)(呵,你可以命名的更短但損失了可讀性)。
綜上,我去掉了類庫中對基本類型判斷的isNull/isUndefined/isBoolean/isNumber/isString,需要用到這些判斷的時候直接使用typeof運算符等。

相關(guān)文章

  • JavaScript監(jiān)聽觸摸事件代碼實例

    JavaScript監(jiān)聽觸摸事件代碼實例

    這篇文章主要介紹了JavaScript監(jiān)聽觸摸事件代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • javascript內(nèi)嵌式與外鏈?zhǔn)降幕緫?yīng)用方式

    javascript內(nèi)嵌式與外鏈?zhǔn)降幕緫?yīng)用方式

    這篇文章主要介紹了javascript內(nèi)嵌式與外鏈?zhǔn)降幕緫?yīng)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • ES6學(xué)習(xí)筆記之Set和Map數(shù)據(jù)結(jié)構(gòu)詳解

    ES6學(xué)習(xí)筆記之Set和Map數(shù)據(jù)結(jié)構(gòu)詳解

    這篇文章主要介紹了ES6學(xué)習(xí)筆記之Set和Map數(shù)據(jù)結(jié)構(gòu),結(jié)合實例形式詳細分析了ECMAScript中基本數(shù)據(jù)結(jié)構(gòu)Set和Map的常用屬性與方法的功能、用法及相關(guān)注意事項,需要的朋友可以參考下
    2017-04-04
  • javaScript在表單提交時獲取表單數(shù)據(jù)的示例代碼

    javaScript在表單提交時獲取表單數(shù)據(jù)的示例代碼

    本文介紹了五種在JavaScript中獲取表單數(shù)據(jù)的方法:使用FormData對象、手動提取表單數(shù)據(jù)、使用querySelector獲取單個字段數(shù)據(jù)、序列化為查詢字符串和配合AJAX提交表單數(shù)據(jù),每種方法都有示例代碼,幫助開發(fā)者更好地理解和應(yīng)用
    2025-02-02
  • JavaScript數(shù)組去重的幾種方法

    JavaScript數(shù)組去重的幾種方法

    這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組去重的幾種方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • javascript實現(xiàn)簡單放大鏡效果

    javascript實現(xiàn)簡單放大鏡效果

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)簡單放大鏡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 實例淺析js的this

    實例淺析js的this

    本文通過做幾個簡單的對照實驗,根據(jù)這幾個對照實驗的結(jié)果,幫助大家理解js的this用法。下面就跟小編一起來看看吧
    2016-12-12
  • uniapp內(nèi)置組件scroll-view案例詳解(完整代碼)

    uniapp內(nèi)置組件scroll-view案例詳解(完整代碼)

    這篇文章主要介紹了uniapp內(nèi)置組件scroll-view案例詳解,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 一個級聯(lián)菜單代碼學(xué)習(xí)及removeClass與addClass的應(yīng)用

    一個級聯(lián)菜單代碼學(xué)習(xí)及removeClass與addClass的應(yīng)用

    最近在學(xué)些web前段的知識,看見博客園首頁左側(cè)的一個級聯(lián)菜單,很是好奇,于是想自己實現(xiàn)以下,代碼書寫很簡潔而且易懂,感興趣的朋友可以了解下,希望本文對你學(xué)習(xí)級聯(lián)菜單有所幫助
    2013-01-01
  • JavaScript 組件之旅(四):測試 JavaScript 組件

    JavaScript 組件之旅(四):測試 JavaScript 組件

    本期,我們要討論的話題是 JavaScript 的測試,以檢查組件的狀態(tài)和工作方式是否符合預(yù)期,還會介紹一個可以方便編寫測試用例的測試方法。這里說的測試當(dāng)然是使用自動化的測試手段,這是軟件質(zhì)量保證(QA)的重要環(huán)節(jié)。
    2009-10-10

最新評論

曲沃县| 昭平县| 梧州市| 临沭县| 沈丘县| 平罗县| 垫江县| 阜康市| 阿拉善右旗| 台山市| 高雄县| 平乡县| 西乌珠穆沁旗| 同德县| 五莲县| 连南| 诸暨市| 方城县| 盐源县| 留坝县| 麻栗坡县| 芜湖县| 荔浦县| 项城市| 林州市| 黄石市| 鄯善县| 合川市| 海口市| 洮南市| 鸡东县| 定州市| 陆川县| 闸北区| 唐海县| 越西县| 海阳市| 温宿县| 孟津县| 石家庄市| 重庆市|