You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							1.5 KiB
						
					
					
				
								// 判断arr是否为一个数组,返回一个bool值
							 | 
						|
								function isArray(arr) {
							 | 
						|
									return Object.prototype.toString.call(arr) === '[object Array]';
							 | 
						|
								}
							 | 
						|
								// 深度克隆
							 | 
						|
								function deepClone(obj) {
							 | 
						|
									// 对常见的“非”值,直接返回原来值
							 | 
						|
									if ([null, undefined, NaN, false].includes(obj)) return obj;
							 | 
						|
									if (typeof obj !== "object" && typeof obj !== 'function') {
							 | 
						|
										//原始类型直接返回
							 | 
						|
										return obj;
							 | 
						|
									}
							 | 
						|
									var o = isArray(obj) ? [] : {};
							 | 
						|
									for (let i in obj) {
							 | 
						|
										if (obj.hasOwnProperty(i)) {
							 | 
						|
											o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									return o;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function getUUid(len = 32, firstU = true, radix = null) {
							 | 
						|
									let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
							 | 
						|
									let uuid = [];
							 | 
						|
									radix = radix || chars.length;
							 | 
						|
								
							 | 
						|
									if (len) {
							 | 
						|
										// 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位
							 | 
						|
										for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
							 | 
						|
									} else {
							 | 
						|
										let r;
							 | 
						|
										// rfc4122标准要求返回的uuid中,某些位为固定的字符
							 | 
						|
										uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
							 | 
						|
										uuid[14] = '4';
							 | 
						|
								
							 | 
						|
										for (let i = 0; i < 36; i++) {
							 | 
						|
											if (!uuid[i]) {
							 | 
						|
												r = 0 | Math.random() * 16;
							 | 
						|
												uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									// 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class
							 | 
						|
									if (firstU) {
							 | 
						|
										uuid.shift();
							 | 
						|
										return 'u' + uuid.join('');
							 | 
						|
									} else {
							 | 
						|
										return uuid.join('');
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								export {
							 | 
						|
									deepClone,
							 | 
						|
									getUUid
							 | 
						|
								};
							 |