摘要:實(shí)用的函數(shù)集合總結(jié)基本類(lèi)型的判斷在項(xiàng)目實(shí)例中,難免要做一些容錯(cuò)處理或者是對(duì)實(shí)例的類(lèi)型判斷,那么就可以把這部分的判斷整理成公共的文件,供全局使用。
實(shí)用的函數(shù)集合總結(jié) 基本類(lèi)型的判斷
在項(xiàng)目實(shí)例中,難免要做一些容錯(cuò)處理或者是對(duì)實(shí)例的類(lèi)型判斷,那么就可以把這部分的判斷整理成公共的js文件,供全局使用。
利用object.prototype.toString.call可以判斷對(duì)象的類(lèi)型
變量的兩種類(lèi)型值:
1、基本類(lèi)型:String,Number,Boolean,undefined,null,按值訪問(wèn)
2、引用類(lèi)型:Object,Array, 對(duì)象保存在內(nèi)存中
可以作為項(xiàng)目的工具類(lèi),比如命名為tool.js
export default isNumber(value) { return Object.prototype.toString.call(value) == "[object Number]" } export default isString(value) { return Object.prototype.toString.call(value) == "[object String]" } export default isArray(value) { return Object.prototype.toString.call(value) == "[object Array]" } export default isBoolean(value) { return Object.prototype.toString.call(value) == "[object Boolean]" } export default isUndefined(value) { return value === undefined } export default isNull(value) { return value === null } export default isSymbol(value) { return Object.prototype.toString.call(value) == "[object Symbol]" } export default isObject(value) { return ( Object.prototype.toString.call(value) == "[object Object]" || // if it isn"t a primitive value, then it is a common object ( !isNumber(value) && !isString(value) && !isBoolean(value) && !isArray(value) && !isNull(value) && !isFunction(value) && !isUndefined(value) && !isSymbol(value) ) ) } //是否是一個(gè)空對(duì)象 export function isEmptyObject(obj) { if(!isObject(obj)) { return false } if(var key in obj) { return false } return true } //是否是一個(gè)空數(shù)組 export function isEmptyArray(array) { if(!isArray(array)) { return false } return array.length > 0 ? false : true } export function isFunction(value) { return Object.prototype.toString.call(value) == "[object Function]"; }引用類(lèi)型克隆合并
Object.assign方法實(shí)行的是淺拷貝,而不是深拷貝。也就是說(shuō),如果拷貝后的結(jié)果是兩個(gè)對(duì)象指向同一引用地址,修改其中一個(gè)對(duì)象的屬性,則另一個(gè)對(duì)象的屬性也會(huì)改變
所以改變引用類(lèi)型值時(shí)會(huì)影響到拷貝的值
var obj1 = {a: {b: 1}}; var obj2 = Object.assign({}, obj1); obj1.a.b = 2; obj2.a.b // 2
下面extend函數(shù)就是解決上面的問(wèn)題
/* 深度合并內(nèi)容 引用類(lèi)型克隆合并 arguments[0] = target arguments type is Object Or Array 多內(nèi)容合并覆蓋優(yōu)先級(jí): arguments[0]此時(shí)引用類(lèi)型克隆出來(lái)的對(duì)象就是完全獨(dú)立的對(duì)象了,源對(duì)象修改屬性不會(huì)影響到克隆的對(duì)象
var obj1 = {a: {b: 1}}; var obj2 = extend({}, obj1) obj1.a.b = 2; obj2.a.b // 1可以合并 對(duì)象與對(duì)象,數(shù)組與數(shù)組,對(duì)象與數(shù)組等
不同時(shí)間形式的輸出時(shí)間戳是一樣的,有時(shí)需要根據(jù)需求輸出不一樣格式的時(shí)間形式
yyyy年MM月dd日 hh:mm:ss
yyyy年MM月dd日
yyyy-mm-dd
/*@param date 時(shí)間戳*/ /*@param format 時(shí)間格式*/ function dateFormat(date,format){ if(!format || typeof format !== "string"){ console.error("format is undefiend or type is Error"); return ""; } date = date instanceof Date? date : (typeof date === "number"|| typeof date === "string")? new Date(date): new Date(); //解析 var formatReg = { "y+": date.getFullYear(), "M+": date.getMonth()+1, "d+": date.getDate(), "h+": date.getHours(), "m+": date.getMinutes(), "s+": date.getSeconds() } for(var reg in formatReg){ if(new RegExp(reg).test(format)){ var match = RegExp.lastMatch; format = format.replace(match, formatReg[reg]< 10 ? "0"+formatReg[reg]: formatReg[reg].toString() ); } } return format; }這樣,把你想要的時(shí)間的格式和時(shí)間戳傳入即可。
dateFormat(new Date().getTime(),"yyyy-MM-dd hh:mm:ss") dateFormat(new Date().getTime(),"MM-dd-yy hh:mm:ss") ...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/99396.html
摘要:基本概念學(xué)習(xí)目標(biāo)學(xué)會(huì)如何使用,掌握的常用,能夠使用實(shí)現(xiàn)常見(jiàn)的效果。想要實(shí)現(xiàn)簡(jiǎn)單的動(dòng)畫(huà)效果,也很麻煩代碼冗余。實(shí)現(xiàn)動(dòng)畫(huà)非常簡(jiǎn)單,而且功能更加的強(qiáng)大。注意選擇器返回的是對(duì)象。 jQuery基本概念 學(xué)習(xí)目標(biāo):學(xué)會(huì)如何使用jQuery,掌握jQuery的常用api,能夠使用jQuery實(shí)現(xiàn)常見(jiàn)的效果。 為什么要學(xué)習(xí)jQuery? 【01-讓div顯示與設(shè)置內(nèi)容.html】 使用javasc...
摘要:基本概念學(xué)習(xí)目標(biāo)學(xué)會(huì)如何使用,掌握的常用,能夠使用實(shí)現(xiàn)常見(jiàn)的效果。想要實(shí)現(xiàn)簡(jiǎn)單的動(dòng)畫(huà)效果,也很麻煩代碼冗余。實(shí)現(xiàn)動(dòng)畫(huà)非常簡(jiǎn)單,而且功能更加的強(qiáng)大。注意選擇器返回的是對(duì)象。 jQuery基本概念 學(xué)習(xí)目標(biāo):學(xué)會(huì)如何使用jQuery,掌握jQuery的常用api,能夠使用jQuery實(shí)現(xiàn)常見(jiàn)的效果。 為什么要學(xué)習(xí)jQuery? 【01-讓div顯示與設(shè)置內(nèi)容.html】 使用javasc...
摘要:基本概念學(xué)習(xí)目標(biāo)學(xué)會(huì)如何使用,掌握的常用,能夠使用實(shí)現(xiàn)常見(jiàn)的效果。想要實(shí)現(xiàn)簡(jiǎn)單的動(dòng)畫(huà)效果,也很麻煩代碼冗余。實(shí)現(xiàn)動(dòng)畫(huà)非常簡(jiǎn)單,而且功能更加的強(qiáng)大。注意選擇器返回的是對(duì)象。 jQuery基本概念 學(xué)習(xí)目標(biāo):學(xué)會(huì)如何使用jQuery,掌握jQuery的常用api,能夠使用jQuery實(shí)現(xiàn)常見(jiàn)的效果。 為什么要學(xué)習(xí)jQuery? 【01-讓div顯示與設(shè)置內(nèi)容.html】 使用javasc...
摘要:基本概念學(xué)習(xí)目標(biāo)學(xué)會(huì)如何使用,掌握的常用,能夠使用實(shí)現(xiàn)常見(jiàn)的效果。想要實(shí)現(xiàn)簡(jiǎn)單的動(dòng)畫(huà)效果,也很麻煩代碼冗余。實(shí)現(xiàn)動(dòng)畫(huà)非常簡(jiǎn)單,而且功能更加的強(qiáng)大。注意選擇器返回的是對(duì)象。 jQuery基本概念 學(xué)習(xí)目標(biāo):學(xué)會(huì)如何使用jQuery,掌握jQuery的常用api,能夠使用jQuery實(shí)現(xiàn)常見(jiàn)的效果。 為什么要學(xué)習(xí)jQuery? 【01-讓div顯示與設(shè)置內(nèi)容.html】 使用javasc...
摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過(guò)多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...
閱讀 2861·2021-10-14 09:50
閱讀 1218·2021-10-08 10:21
閱讀 3646·2021-10-08 10:16
閱讀 3063·2021-09-27 14:02
閱讀 3135·2021-09-23 11:21
閱讀 2109·2021-09-07 10:17
閱讀 407·2019-08-30 14:00
閱讀 2105·2019-08-29 17:26