framework4js
Version:
Framework-for-js is a better Javascript's framework
192 lines (183 loc) • 5.44 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _qs = _interopRequireDefault(require("qs"));
/**
* Class Lib
* import Underscore || Lodash is so big...
*/
var Lib = /*#__PURE__*/function () {
function Lib() {
(0, _classCallCheck2["default"])(this, Lib);
}
(0, _createClass2["default"])(Lib, null, [{
key: "typeOf",
value:
/**
* typeOf 类型
* @param {*} value
*/
function typeOf(value) {
return (0, _typeof2["default"])(value);
}
/**
* getTag 处理类型
* @param {*} value
*/
}, {
key: "getTag",
value: function getTag(value) {
return Object.prototype.toString.call(value);
}
/**
* Method isFunction
* @param {*} value
* @returns
*/
}, {
key: "isFunction",
value: function isFunction(value) {
return Lib.typeOf(value) === 'function' && Lib.getTag(value) === '[object Function]';
}
/**
* isString 是否字符串
* @param {String} value
*/
}, {
key: "isString",
value: function isString(value) {
return Lib.typeOf(value) === 'string' || Lib.typeOf(value) === 'object' && value != null && !Array.isArray(value) && Lib.getTag(value) === '[object String]';
}
/**
* isObject 是否对象
* @param {Object} value
*/
}, {
key: "isObject",
value: function isObject(value) {
return Lib.getTag(value) === '[object Object]';
}
/**
* isObject 是否Undefined
* @param {*} value
* @return boolean
*/
}, {
key: "isUndefined",
value: function isUndefined(value) {
return Lib.getTag(value) === '[object Undefined]' || value === undefined;
}
/**
* isClass 是否类
* @param {*} value
* @return boolean
*/
}, {
key: "isClass",
value: function isClass(value) {
// isFunction
if (!Lib.isFunction(value)) {
return false;
}
// Function toString
var str = value.toString();
// async function or arrow function
if (value.prototype === undefined) return false;
// generator function or malformed definition
if (value.prototype.constructor !== value) return false;
// ES6 class
if (str.slice(0, 5) === 'class') return true;
// has own prototype properties
if (Object.getOwnPropertyNames(value.prototype).length >= 2) return true;
// anonymous function
if (/^function\s+\(|^function\s+anonymous\(/.test(str)) return false;
// Other
return false;
}
/**
* 字符串去除首尾字符
* @param str 字符串
* @param char 字符
* @param type 类型
*/
}, {
key: "strTrim",
value: function strTrim(str, _char, type) {
if (_char) {
if (type === 'L') {
return str.replace(new RegExp('^\\' + _char + '+', 'g'), '');
} else if (type === 'R') {
return str.replace(new RegExp('\\' + _char + '+$', 'g'), '');
}
return str.replace(new RegExp('^\\' + _char + '+|\\' + _char + '+$', 'g'), '');
}
return str.replace(/^\s+|\s+$/g, '');
}
// /**
// * Method isClass
// * @param {*} obj
// * @returns
// */
// static isClass(obj) {
// if (!Lib.isFunction(obj)) {
// return false;
// }
//
// // function toString
// let str = obj.toString();
//
// // async function or arrow function
// if (obj.prototype === undefined) return false;
// // generator function or malformed definition
// if (obj.prototype.constructor !== obj) return false;
// // ES6 class
// if (str.slice(0, 5) == "class") return true;
// // has own prototype properties
// if (Object.getOwnPropertyNames(obj.prototype).length >= 2) return true;
// // anonymous function
// if (/^function\s+\(|^function\s+anonymous\(/.test(str)) return false;
// // ES5 class without `this` in the body and the name's first character
// // upper-cased.
// if (strict && /^function\s+[A-Z]/.test(str)) return true;
// // has `this` in the body
// if (/\b\(this\b|\bthis[\.\[]\b/.test(str)) {
// // not strict or ES5 class generated by babel
// if (!strict || /classCallCheck\(this/.test(str)) return true;
// return /^function\sdefault_\d+\s*\(/.test(str);
// }
//
// return false;
// }
}, {
key: "qs",
value: function qs(data) {
if (Lib.isObject(data)) {
return Lib.qsStringify(data);
}
}
}, {
key: "qsStringify",
value: function qsStringify(obj) {
if (!Lib.isObject(obj)) {
return obj;
}
return _qs["default"].stringify(obj);
}
}, {
key: "qsParse",
value: function qsParse(str) {
if (typeof str != 'string') {
return str;
}
return _qs["default"].parse(str);
}
}]);
return Lib;
}();
exports["default"] = Lib;