天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

YUI 讀碼日記之 YAHOO.lang.is*

YAHOO.lang = YAHOO.lang || {
    isArray: function(o) { 
        if (o) {
           var l = YAHOO.lang;
           // 如果該對(duì)象有 length 這個(gè)屬性,同時(shí)支持 splice 方法,
           // 那么就認(rèn)為它為數(shù)組。
           return l.isNumber(o.length) && l.isFunction(o.splice);
        }
        return false;
    },

    isBoolean: function(o) {
        return typeof o === 'boolean';
    },

    isFunction: function(o) {
        return typeof o === 'function';
    },

    isNull: function(o) {
        return o === null;
    },

    isNumber: function(o) {
        return typeof o === 'number' && isFinite(o);
    },

    isObject: function(o) {
        return (o && (typeof o === 'object' || 
                            YAHOO.lang.isFunction(o))) || false;
    },

    isString: function(o) {
        return typeof o === 'string';
    },

    isUndefined: function(o) {
        return typeof o === 'undefined';
    },

    //...

    isValue: function(o) {
        // Infinity fails
        // return (o || o === false || o === 0 || o === '');
        var l = YAHOO.lang;
        return (l.isObject(o) || l.isString(o) || 
                           l.isNumber(o) || l.isBoolean(o));
    }
};…… 復(fù)制粘貼分割線 ……

據(jù)悉,在 YUI 2.2.0 版本以前,YAHOO.lang.isArray 是這樣寫(xiě)的。

isArray: function(obj) { 
    // safari 有 bug,只好處理字符串
    if (obj && obj.constructor && 
                 obj.constructor.toString().indexOf('Array') > -1) {  
        return true;  
    } else {
        return YAHOO.lang.isObject(obj) && obj.constructor == Array;  
    }  
},而這樣的判斷數(shù)組類型是有缺陷的,比如下面的代碼

function myArray() {
   this.name = 'name';  
}  
var o2 = new myArray();  
alert(YAHOO.util.isArray(o2));  // 彈出true  
// 因?yàn)?nbsp;obj.constructor.toString() 中包含 myArray 字樣,所以返回true  

function Obj() {  
    this.name = 'name';  
}  
var o = new Obj();  
o.constructor = Array;
alert(YAHOO.util.isArray(o));  // 彈出 true  
// 因?yàn)樵?nbsp;JavaScript 里,constructor 也是屬性
// 可以動(dòng)態(tài)指定,所以返回 true因此,在 YUI 的后續(xù)版本,YAHOO.lang.isArray 被修改成了目前的這個(gè)樣子

isArray: function(o) { 
    if (o) {
       var l = YAHOO.lang;
       // 如果該對(duì)象有 length 這個(gè)屬性,同時(shí)支持 splice 方法,
       // 那么就認(rèn)為它為數(shù)組。
       return l.isNumber(o.length) && l.isFunction(o.splice);
    }
    return false;
},新的實(shí)現(xiàn)用了另外的思路:如果該對(duì)象有 length 這個(gè)屬性,同時(shí)支持 splice 方法,那么就認(rèn)為它為數(shù)組。當(dāng)然,它依然有漏洞,我們?nèi)匀豢梢詣?chuàng)建一個(gè)對(duì)象,使其擁有 length 屬性和 splice 方法。但我覺(jué)得現(xiàn)在的實(shí)現(xiàn)更為合理,因?yàn)橐粊?lái)可能性不大,二來(lái)避免了詭異的瀏覽器的 BUG 。

再看 YUI 2.3.0 后引入的 YAHOO.lang.isValue,其實(shí)就是判斷參數(shù)是否是一個(gè)有意義的值,只要參數(shù)不是 null/undefined/NaN,那么都返回 true。(注意這和一般的判斷真假的不同就是, 0/false/''(空字符串) 這些都算是有效的值),所以 YAHOO.lang.isValue 非常適合用來(lái)判斷表單域的值是否為有效值。

JavaScript技術(shù)YUI 讀碼日記之 YAHOO.lang.is*,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99久久精品免费国产一区二区三区 | 成年人视频免费在线播放 | 免费观看男生桶美女私人部位 | 让人爽到湿的小黄书 | 精品亚洲AV无码蜜芽麻豆 | 国产乱妇乱子在线播视频播放网站 | 一本道亚洲区免费观看 | 国产香蕉视频在线播放 | 亚洲欧美日韩一级特黄在线 | 永久免费无码AV国产网站 | 久久久久久久久久毛片精品美女 | 青青草原影视 | 漂亮的保姆6在线观看中文 漂亮的保姆5电影免费观看完整版中文 | 陈红下面又紧又小好爽 | 久久精品国产亚洲AV麻豆欧美玲 | 色琪琪久久热在线 | 亚洲精品电影天堂网 | 国产一区免费在线观看 | 国产免费高清mv视频在线观看 | 4480YY无码午夜私人影院 | 国产综合视频在线观看一区 | 中文字幕在线观看亚洲日韩 | 入禽太深视频免费视频 | 琪琪热热色原日韩在线 | 精品国产乱码久久久久久夜深人妻 | 99 久久99久久精品免观看 | 91精品在线国产 | 视频一区视频二区在线观看 | 日韩精品一区二区三区AV在线观看 | 亚洲福利精品电影在线观看 | 亚洲AV成人无码网天堂 | 亚洲 欧美 国产 综合五月天 | 亚洲精品视频观看 | 美女被j进去动态 | 快播电影网站大全 | 亚洲成人免费在线 | 日本亚洲电影 | 国产手机精品一区二区 | yellow在线观看免费高清的日本 | 欧美亚洲另类热图 | 国产99久久九九免费精品无码 |