@iicoding/utils
Version:
Browser 端 - 类型判断 - 类似 koa 的异步compose - sleep - 扩展对象属性 - 扩展 storage 对象功能
32 lines • 1.16 kB
JavaScript
// @ts-ignore
Reflect.appendChain = function (oChain, oProto) {
if (arguments.length < 2) {
// @ts-ignore
throw new TypeError("".concat(this.name, " Not enough arguments"));
}
if (typeof oProto === 'number' || typeof oProto === 'boolean') {
throw new TypeError('second argument to Object.appendChain must be an object or a string');
}
var oNewProto = oProto;
var oReturn;
var o2nd;
var oLast;
oReturn = o2nd = oLast =
// @ts-ignore
oChain instanceof Object ? oChain : new oChain.constructor(oChain);
for (var o1st = this.getPrototypeOf(o2nd); o1st !== Object.prototype && o1st !== Function.prototype; o1st = this.getPrototypeOf(o2nd)) {
o2nd = o1st;
}
if (oProto.constructor === String) {
oNewProto = Function.prototype;
// eslint-disable-next-line prefer-spread,prefer-rest-params
oReturn = Function.apply(null, Array.prototype.slice.call(arguments, 1));
this.setPrototypeOf(oReturn, oLast);
}
this.setPrototypeOf(o2nd, oNewProto);
return oReturn;
};
export var extendMethodByChain = function extendMethodByChain(oChain, oProto) {
// @ts-ignore
Reflect.appendChain(oChain, oProto);
};