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

別了 JavaScript中的isXX系列

 更新時(shí)間:2012年08月01日 22:38:29   作者:  
我們很容易被漂亮的代碼吸引,也不知不覺(jué)的在自己的代碼庫(kù)中加入這些。卻沒(méi)有冷靜的想過(guò)它們的優(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在類(lèi)庫(kù)中用的最多。如判斷是否傳入了某個(gè)參數(shù),判斷對(duì)象是否擁有某個(gè)屬性等等。但這個(gè)函數(shù)是不必存在,我已將其移除。理由如下

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

相關(guān)文章

  • JavaScript監(jiān)聽(tīng)觸摸事件代碼實(shí)例

    JavaScript監(jiān)聽(tīng)觸摸事件代碼實(shí)例

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

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

    這篇文章主要介紹了javascript內(nèi)嵌式與外鏈?zhǔn)降幕緫?yīng)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    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é)合實(shí)例形式詳細(xì)分析了ECMAScript中基本數(shù)據(jù)結(jié)構(gòu)Set和Map的常用屬性與方法的功能、用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • javaScript在表單提交時(shí)獲取表單數(shù)據(jù)的示例代碼

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

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

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

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

    javascript實(shí)現(xiàn)簡(jiǎn)單放大鏡效果

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

    實(shí)例淺析js的this

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

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

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

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

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

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

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

最新評(píng)論

阿瓦提县| 南靖县| 芜湖市| 汶川县| 阳原县| 友谊县| 枣阳市| 石渠县| 乐亭县| 临城县| 炉霍县| 罗源县| 镇远县| 夏邑县| 屏东市| 包头市| 文安县| 同德县| 疏附县| 揭西县| 仙居县| 尉犁县| 白水县| 绍兴市| 广平县| 小金县| 日照市| 兰州市| 广宁县| 兰坪| 迭部县| 钦州市| 乌鲁木齐市| 克拉玛依市| 定州市| 田东县| 邮箱| 滨州市| 天峻县| 桐城市| 长武县|