国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Javascript中定義方法的另類寫法(批量定義js對象的方法)

2019-11-20 23:55:36
字體:
供稿:網(wǎng)友
復(fù)制代碼 代碼如下:

isArray : function(v){
return toString.apply(v) === '[object Array]';
},
isDate : function(v){
return toString.apply(v) === '[object Date]';
},
isObject : function(v){
return !!v && Object.prototype.toString.call(v) === '[object Object]';
},
isPrimitive : function(v){
return Ext.isString(v) || Ext.isNumber(v) || Ext.isBoolean(v);
},
isFunction : function(v){
return toString.apply(v) === '[object Function]';
},
isNumber : function(v){
return typeof v === 'number' && isFinite(v);
},
isString : function(v){
return typeof v === 'string';
},
isBoolean : function(v){
return typeof v === 'boolean';
}

上面是Extjs3.X ext-base.js里面的判斷類型的代碼,你仔細(xì)一看, 會發(fā)現(xiàn)有很多相同的東西, 如:
復(fù)制代碼 代碼如下:

is類型:function(v){
return toString.apply(v) ==="類型";
}
或者
is類型:function(v){
returntypeof v ==="類型";
}

然而里面的tyoeof 我們可以統(tǒng)一使用 toString方法來判斷類型,所有上面的代碼可以是同一個類型,即:
復(fù)制代碼 代碼如下:

var is類型=function(v){
return toString.call(v) ==="類型";
}

上面的就是一個模型,對應(yīng)這個判斷的方法體內(nèi)是一個的方法, 我們可以對他進(jìn)行簡化(但是有個弊端:可讀性差),可以大大減少代碼,從而可以提高Javascript加載效率,改進(jìn)后的代碼如下:
復(fù)制代碼 代碼如下:

var Easy={}, dataTypes = ["Number", "Boolean", "String", "Array",
"Object", "Function", "Date", "RegExp"];
var toStr = Object.prototype.toString;
var is = function (v, t) {
return toStr(o) == "[object " + t + "]";
};
for (var i = 0, len = dataTypes.length, t; i < len; i++) {
(function (t) {
Easy["is" + t] = function (o) {
return is(o, t);
}
})(dataTypes[i]);//用到了閉包
}

上面這段代碼, 我們就為Easy這個對象創(chuàng)建了8個is開頭的判斷類型的方法;當(dāng)然如果有些方法不合理還可以覆蓋如:
復(fù)制代碼 代碼如下:

Easy.isNumber=function(v){
return toString.call(v) ==="[object Number]"&& isFinite(v);
}

所以有時候?qū)懸恍┓椒üδ茴愃频姆椒梢钥紤]這種寫法, 餓了,吃飯去了,這次就介紹到這里了, 下回再聊。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沙河市| 通渭县| 盘山县| 遂昌县| 元氏县| 岫岩| 祁阳县| 孝感市| 海丰县| 葫芦岛市| 冕宁县| 锡林浩特市| 连州市| 崇文区| 贵南县| 孝昌县| 囊谦县| 兰西县| 高淳县| 曲周县| 高平市| 纳雍县| 池州市| 张家口市| 聊城市| 繁昌县| 永善县| 建湖县| 乳源| 湖北省| 鄂尔多斯市| 页游| 河南省| 全椒县| 吉安市| 云梦县| 大厂| 望奎县| 德清县| 曲麻莱县| 手游|