在專案例項中,難免要做一些容錯處理或者是對例項的型別判斷,那麼就可以把這部分的判斷整理成公共的js檔案,供全域性使用。
利用object.prototype.tostring.call
可以判斷物件的型別
變數的兩種型別值:
1、基本型別:string,number,boolean,undefined,null,按值訪問
2、引用型別:object,array, 物件儲存在記憶體中
可以作為專案的工具類,比如命名為tool.js
export default isnumber(value)
export default isstring(value)
export default isarray(value)
export default isboolean(value)
export default isundefined(value)
export default isnull(value)
export default issymbol(value)
export default isobject(value)
//是否是乙個空物件
export function isemptyobject(obj)
if(var key in obj)
return true
}//是否是乙個空陣列
export function isemptyarray(array)
return array.length > 0 ? false : true
}export function isfunction(value)
object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果拷貝後的結果是兩個物件指向同一引用位址,修改其中乙個物件的屬性,則另乙個物件的屬性也會改變
所以改變引用型別值時會影響到拷貝的值
var obj1 = };
var obj2 = object.assign({}, obj1);
obj1.a.b = 2;
obj2.a.b // 2
下面extend
函式就是解決上面的問題
/*
深度合併內容
引用型別轉殖合併
arguments[0] = target
arguments type is object or array
多內容合併覆蓋優先順序: arguments[0]此時引用型別轉殖出來的物件就是完全獨立的物件了,源物件修改屬性不會影響到轉殖的物件
var obj1 = };
var obj2 = extend({}, obj1)
obj1.a.b = 2;
obj2.a.b // 1
可以合併 物件與物件,陣列與陣列,物件與陣列等
時間戳是一樣的,有時需要根據需求輸出不一樣格式的時間形式
/*@param date 時間戳*/
/*@param format 時間格式*/
function dateformat(date,format)
date = date instanceof date? date : (typeof date === 'number'|| typeof date === 'string')? new date(date): new date();
//解析
var formatreg =
for(var reg in formatreg)
}return format;
}
這樣,把你想要的時間的格式和時間戳傳入即可。
dateformat(new date().gettime(),'yyyy-mm-dd hh:mm:ss')
dateformat(new date().gettime(),'mm-dd-yy hh:mm:ss')
...
前端開發常用方法
淺拷貝和深拷貝 let arr arr 淺拷貝 object.assign arr 淺拷貝 clonedeep arr 深拷貝 json parse json stringify arr 深拷貝 不能拷貝 constructor 方法 陣列去重 uniquekey arr,key let resul...
前端開發 遞迴函式
什麼是遞迴函式 閉包和遞迴,很多前端望而生畏,其實沒那麼難,今天我們來簡單的談一下遞迴函式,所謂的遞迴函式就是在函式體內呼叫本函式。說白了,就是自己調自己,使用遞迴函式一定要注意,處理不當就會進入死迴圈。遞迴函式的應用 遞迴函式只有在特定的情況下使用 例如階乘或者時間呼叫等。今天我們通過乙個簡單的案...
前端開發常用的meta標籤
1 charset 兩種寫法 2 viewpot content 引數 width viewport 寬度 數值 device width height viewport 高度 數值 device height initial scale 初始縮放比例 maximum scale 最大縮放比例 mi...