simple-frame-unit
Version:
基于vue2 研发的与simple-data后端配合使用的组件
125 lines (114 loc) • 3.01 kB
JavaScript
/**
* 获取变量数据类型,包括ES6 新类型Symbol
* @param n
* @returns {string}
*/
import {typeList} from "../global/variable";
export function getVarType(n) {
const typeStr = Object.prototype.toString.call(n);
let typeName = '';
switch (typeStr) {
case '[object String]':
typeName = 'string';
break;
case '[object Number]':
typeName = 'number';
break;
case '[object Boolean]':
typeName = 'boolean';
break;
case '[object Undefined]':
typeName = 'undefined';
break;
case '[object Object]':
typeName = 'object';
break;
case '[object Array]':
typeName = 'array';
break;
case '[object Null]':
typeName = 'null';
break;
case '[object RegExp]':
typeName = 'RegExp';
break;
case '[object Symbol]':
typeName = 'symbol';
break;
case '[object JSON]':
typeName = 'json';
break;
case '[object Math]':
typeName = 'math';
break;
default:
typeName = 'object';
}
return typeName;
}
/**
* @name isMediaType
* @param url
* @param type
* @return {string}
* @desc 根据文件类型返回dom元素
*/
export const isMediaType = (url, type) => {
if (validateNull(url)) return
if (typeList.audio.test(url) || type === 'audio') {
return 'audio'
} else if (typeList.video.test(url) || type === 'video') {
return 'video'
} else if (typeList.img.test(url) || type === 'img') {
return 'img'
} else if (typeList.iframe.test(url) || typeList.words.test(type)) {
return 'iframe'
}
}
/**
* 判断是否为空
*/
export function validateNull(val) {
if (val instanceof Date || typeof val === 'boolean' || typeof val === 'number') return false;
if (val instanceof Array) {
if (val.length === 0) return true;
} else if (val instanceof Object) {
for (var o in val) {
return false;
}
return true;
} else {
return val === 'null' ||
val == null ||
val === 'undefined' ||
val === undefined ||
val === '';
}
return false;
}
/**
* 设置px像素
*/
export const setPx = (val, defval = '') => {
if (validateNull(val)) val = defval;
if (validateNull(val)) return '';
val = val + '';
if (val.indexOf('%') === -1) {
val = val + 'px';
}
return val;
};
/**
* 判断元素是否是 VNode对象
* @param _this
* @param node
* @return {boolean}
*/
export function isVNode(_this, node) {
// 获取 vnode 实例
const vnode = _this.$createElement('span', '')
// VNode 构造函数
const VNode = vnode.constructor;
// 所以通过 obj instanceof VNode 即可判断
return node instanceof VNode
}