兼容低版本IE的JScript5.5实现

2019-06-03 19:56:45王旭
<< 6) | (c2 & 0x3F)); break; } case 14: { // 1110 xxxx 10xx xxxx 10xx xxxx if ((c2 = checkutf8()) == null) return null; if ((c3 = checkutf8()) == null) return null; out[j++] = String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); break; } default: { switch (c & 0xf) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: { // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx if ((c2 = checkutf8()) == null) return null; if ((c3 = checkutf8()) == null) return null; if ((c4 = checkutf8()) == null) return null; s = ((c & 0x07) << 18) | ((c2 & 0x3f) << 12) | ((c3 & 0x3f) << 6) | (c4 & 0x3f) - 0x10000; if (0 <= s && s <= 0xfffff) { out[j++] = String.fromCharCode(((s >>> 10) & 0x03ff) | 0xd800, (s & 0x03ff) | 0xdc00); } else { return throwerror(); } break; } default: { return throwerror(); } } } } } return out.join(''); } Array.prototype.push = function () { var curlen = this.length; for (var i = 0; i < arguments.length; i++) { this[curlen + i] = arguments[i]; } return this.length; } Array.prototype.pop = function () { var returnValue = this[this.length - 1]; this.length--; return returnValue; } Array.prototype.shift = function () { var returnValue = this[0]; for (var i = 1; i < this.length; i++) { this[i - 1] = this[i]; } this.length--; return returnValue; } Array.prototype.unshift = function () { var curlen = this.length; var arglen = arguments.length; for (var i = curlen - 1; i >= 0 ; i--) { this[i + arglen] = this[i] ; } for (var i = 0; i < arglen; i++) { this[i] = arguments[i]; } //return this.length; // return this value is Gecko/Opera implementation. but IE don't return anything. } Array.prototype.splice = function () { var start = arguments[0]; var deleteCount = arguments[1]; var len = arguments.length - 2; var returnValue = this.slice(start); for (var i = 0; i < len; i++) { this[start + i] = arguments[i + 2]; } for (var i = 0; i < returnValue.length - deleteCount; i++) { this[start + len + i] = returnValue[deleteCount + i]; } this.length = start + len + returnValue.length - deleteCount; returnValue.length = deleteCount; return returnValue; } Function.prototype.apply = function (o, p) { var ps = []; if (typeof(o) == "undefined") { var __$$apply$$__ = this; return eval('__$$apply$$__(' + ps.join(', ') + ');'); } if (p) { if (typeof(p[0]) == "undefined") { @if (@_jscript_version