function add(arg1, arg2) {
let s1 = arg1.toString();
let s2 = arg2.toString();
let arg1Arr = s1.split(".");
let arg2Arr = s2.split(".");
let d1 = arg1Arr.length == 2 ? arg1Arr[1] : "";
let d2 = arg2Arr.length == 2 ? arg2Arr[1] : "";
let maxLen = Math.max(d1.length, d2.length);
let m = Math.pow(10, maxLen);
return Number(((s1 * m + s2 * m) / m).toFixed(maxLen));
}
function sub(arg1, arg2) {
return this.add(arg1, -arg2);
}
function mul(arg1, arg2) {
let m = 0;
let s1 = arg1.toString();
let s2 = arg2.toString();
try { m += s1.split(".")[1].length } catch (e) { }
try { m += s2.split(".")[1].length } catch (e) { }
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
function div(arg1, arg2) {
let t1 = 0;
let t2 = 0;
try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
let r1 = Number(arg1.toString().replace(".", ""));
let r2 = Number(arg2.toString().replace(".", ""));
return this.mul((r1 / r2), Math.pow(10, t2 - t1));
}
function uuid() {
const s4 = () => {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
};
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
const event = {
clientList: [],
listen: function (key, fn) {
if (this.clientListen[key]) {
this.clientList[key] = []
}
this.clientList[key].push(fn)
},
trigger: function () {
const key = Array.prototype.shift.call(arguments)
const fns = this.clientList[key]
if (!fns || fns.length === 0) {
return false
}
for (let i = 0, fn; fn = fns[i++];) {
fn.apply(this, arguments)
}
},
remove: function (key, fn) {
const fns = this.clientList[key]
if (!fns) {
return false
}
if (!fn) {
fns && (fns.length = 0)
} else {
for (let l = fns.length - 1; l >= 0; l--) {
const _fn = fns[l]
if (_fn === fn) {
fns.splice(l, 1)
}
}
}
}
}
const installEvent = (obj) => {
for (let i in event) {
obj[i] = event[i]
}
}
if (!Function.prototype.bind) {
Function.prototype.bind = function () {
var self = this,
context = [].shift.call(arguments),
args = [].slice.call(arguments);
return function () {
self.apply(context, [].concat.call(args, [].slice.call(arguments)));
}
}
}
Function.prototype.bind = function (...arg) {
var self = this;
var newArr = [...arg];
var context = newArr.shift();
return function (...arg2) {
var arr = [...newArr];
Array.prototype.push.apply(arr, arg2)
self.apply(context, arr);
}
}