2.4.0
parent
2a598b2c23
commit
dab02dbb64
|
@ -1,3 +1,7 @@
|
||||||
|
2.4.0 / 2024-08-22
|
||||||
|
==================
|
||||||
|
* 增加Set的一系列原型方法`union、equal、difference、symmetricDifference、intersection、isSubsetOf、isSupersetOf、isDisjointFrom`
|
||||||
|
|
||||||
2.3.0 / 2024-08-07
|
2.3.0 / 2024-08-07
|
||||||
==================
|
==================
|
||||||
* 增加修复版toFixed
|
* 增加修复版toFixed
|
||||||
|
|
10
Readme.md
10
Readme.md
|
@ -29,6 +29,16 @@
|
||||||
│ ├── .group(fn) // 数组分组
|
│ ├── .group(fn) // 数组分组
|
||||||
│ └── .groupToMap(fn) // 数组分组, 返回Map对象
|
│ └── .groupToMap(fn) // 数组分组, 返回Map对象
|
||||||
│
|
│
|
||||||
|
├── Set.prototype
|
||||||
|
│ ├── .union(other) // 合并2个集合
|
||||||
|
│ ├── .equal(other) // 判断2个集合是否一致(仅元素相同, 无关顺序)
|
||||||
|
│ ├── .difference(fn) // 返回不存在于另一个集合的所有元素集合
|
||||||
|
│ ├── .symmetricDifference(fn) // 返回当前集合与给定集合中, 不同时存在的所有元素集合
|
||||||
|
│ ├── .intersection(fn) // 返回共有的元素集合
|
||||||
|
│ ├── .isSubsetOf(fn) // 判断当前集合是否为给定集合的子集
|
||||||
|
│ ├── .isSupersetOf(fn) // 判断当前集合是否为给定集合的子超集
|
||||||
|
│ ├── .isDisjointFrom(fn) // 判断当前集合,是否与给定集合完全不重合
|
||||||
|
│
|
||||||
├── Date
|
├── Date
|
||||||
│ └── .isDate(any) // 判断对象是否为 日期对象
|
│ └── .isDate(any) // 判断对象是否为 日期对象
|
||||||
├── Date.prototype
|
├── Date.prototype
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "es.shim",
|
"name": "es.shim",
|
||||||
"version": "2.3.1",
|
"version": "2.4.0",
|
||||||
"description": "实现部分新API, 以及一些常用的扩展方法",
|
"description": "实现部分新API, 以及一些常用的扩展方法",
|
||||||
"keyworks": [
|
"keyworks": [
|
||||||
"es5",
|
"es5",
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
* @date 2022/01/27 15:33:09
|
* @date 2022/01/27 15:33:09
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import './lib/set.js'
|
||||||
import './lib/array.js'
|
import './lib/array.js'
|
||||||
import './lib/object.js'
|
import './lib/object.js'
|
||||||
import './lib/map.js'
|
import './lib/map.js'
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* 重写原生的flat方法, 性能提升5~10倍(看数组的结构)
|
* 重写原生的flat方法, 性能提升5~10倍(看数组的结构)
|
||||||
*/
|
*/
|
||||||
Object.defineProperty(Array.prototype, 'flat', {
|
Object.defineProperty(Array.prototype, 'flat', {
|
||||||
value: function (deep = 1, arr = []) {
|
value(deep = 1, arr = []) {
|
||||||
for (let it of this) {
|
for (let it of this) {
|
||||||
if (Array.isArray(it) && deep > 0) {
|
if (Array.isArray(it) && deep > 0) {
|
||||||
it.flat(deep - 1, arr)
|
it.flat(deep - 1, arr)
|
||||||
|
@ -17,33 +17,30 @@ Object.defineProperty(Array.prototype, 'flat', {
|
||||||
}
|
}
|
||||||
|
|
||||||
return arr
|
return arr
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'flatMap', {
|
Object.defineProperty(Array.prototype, 'flatMap', {
|
||||||
value: function (fn) {
|
value(fn) {
|
||||||
return this.map(fn).flat()
|
return this.map(fn).flat()
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!Array.prototype.at) {
|
if (!Array.prototype.at) {
|
||||||
Object.defineProperty(Array.prototype, 'at', {
|
Object.defineProperty(Array.prototype, 'at', {
|
||||||
value: function (num) {
|
value(num) {
|
||||||
let n = +num
|
let n = +num
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
n += this.length
|
n += this.length
|
||||||
}
|
}
|
||||||
return this[n]
|
return this[n]
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Array.prototype.findLast) {
|
if (!Array.prototype.findLast) {
|
||||||
Object.defineProperty(Array.prototype, 'findLast', {
|
Object.defineProperty(Array.prototype, 'findLast', {
|
||||||
value: function (fn) {
|
value(fn) {
|
||||||
let num = this.length
|
let num = this.length
|
||||||
while (num > 0) {
|
while (num > 0) {
|
||||||
let item = this[--num]
|
let item = this[--num]
|
||||||
|
@ -51,13 +48,12 @@ if (!Array.prototype.findLast) {
|
||||||
return item
|
return item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// 没有findLast也不会有findLastIndex
|
// 没有findLast也不会有findLastIndex
|
||||||
Object.defineProperty(Array.prototype, 'findLastIndex', {
|
Object.defineProperty(Array.prototype, 'findLastIndex', {
|
||||||
value: function (fn) {
|
value(fn) {
|
||||||
let num = this.length
|
let num = this.length
|
||||||
while (num > 0) {
|
while (num > 0) {
|
||||||
let item = this[--num]
|
let item = this[--num]
|
||||||
|
@ -66,36 +62,32 @@ if (!Array.prototype.findLast) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1
|
return -1
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最新增加的几种方法
|
// 最新增加的几种方法
|
||||||
if (!Array.prototype.toSorted) {
|
if (!Array.prototype.toSorted) {
|
||||||
Object.defineProperty(Array.prototype, 'toSorted', {
|
Object.defineProperty(Array.prototype, 'toSorted', {
|
||||||
value: function (fn) {
|
value(fn) {
|
||||||
return [...this].sort(fn)
|
return [...this].sort(fn)
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'toReversed', {
|
Object.defineProperty(Array.prototype, 'toReversed', {
|
||||||
value: function () {
|
value() {
|
||||||
return [...this].reverse()
|
return [...this].reverse()
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'toSpliced', {
|
Object.defineProperty(Array.prototype, 'toSpliced', {
|
||||||
value: function (...args) {
|
value(...args) {
|
||||||
return [...this].splice(...args)
|
return [...this].splice(...args)
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'with', {
|
Object.defineProperty(Array.prototype, 'with', {
|
||||||
value: function (num, val) {
|
value(num, val) {
|
||||||
let n = +num
|
let n = +num
|
||||||
let arr = [...this]
|
let arr = [...this]
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
|
@ -103,15 +95,14 @@ if (!Array.prototype.toSorted) {
|
||||||
}
|
}
|
||||||
arr[n] = val
|
arr[n] = val
|
||||||
return arr
|
return arr
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 数组分组
|
// 数组分组
|
||||||
if (!Array.prototype.group) {
|
if (!Array.prototype.group) {
|
||||||
Object.defineProperty(Array.prototype, 'group', {
|
Object.defineProperty(Array.prototype, 'group', {
|
||||||
value: function (fn) {
|
value(fn) {
|
||||||
let output = {}
|
let output = {}
|
||||||
if (typeof fn === 'function') {
|
if (typeof fn === 'function') {
|
||||||
for (let it of this) {
|
for (let it of this) {
|
||||||
|
@ -126,12 +117,11 @@ if (!Array.prototype.group) {
|
||||||
} else {
|
} else {
|
||||||
throw Error('argument callback must be a function.')
|
throw Error('argument callback must be a function.')
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, 'groupToMap', {
|
Object.defineProperty(Array.prototype, 'groupToMap', {
|
||||||
value: function (fn) {
|
value(fn) {
|
||||||
let output = new Map()
|
let output = new Map()
|
||||||
if (typeof fn === 'function') {
|
if (typeof fn === 'function') {
|
||||||
for (let it of this) {
|
for (let it of this) {
|
||||||
|
@ -146,7 +136,6 @@ if (!Array.prototype.group) {
|
||||||
} else {
|
} else {
|
||||||
throw Error('argument callback must be a function.')
|
throw Error('argument callback must be a function.')
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,17 +6,16 @@
|
||||||
//获取当天是本月第几周
|
//获取当天是本月第几周
|
||||||
if (!Date.isDate) {
|
if (!Date.isDate) {
|
||||||
Object.defineProperty(Date, 'isDate', {
|
Object.defineProperty(Date, 'isDate', {
|
||||||
value: function (obj) {
|
value(obj) {
|
||||||
return obj && typeof obj === 'object' && obj.getTime ? true : false
|
return obj && typeof obj === 'object' && obj.getTime ? true : false
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Date.prototype.getFullWeek) {
|
if (!Date.prototype.getFullWeek) {
|
||||||
//获取当天是本年度第几周
|
//获取当天是本年度第几周
|
||||||
Object.defineProperty(Date.prototype, 'getFullWeek', {
|
Object.defineProperty(Date.prototype, 'getFullWeek', {
|
||||||
value: function () {
|
value() {
|
||||||
let thisYear = this.getFullYear()
|
let thisYear = this.getFullYear()
|
||||||
let that = new Date(thisYear, 0, 1)
|
let that = new Date(thisYear, 0, 1)
|
||||||
let firstDay = that.getDay()
|
let firstDay = that.getDay()
|
||||||
|
@ -27,7 +26,7 @@ if (!Date.prototype.getFullWeek) {
|
||||||
|
|
||||||
//获取当天是本月第几周
|
//获取当天是本月第几周
|
||||||
Object.defineProperty(Date.prototype, 'getWeek', {
|
Object.defineProperty(Date.prototype, 'getWeek', {
|
||||||
value: function () {
|
value() {
|
||||||
let today = this.getDate()
|
let today = this.getDate()
|
||||||
let thisMonth = this.getMonth()
|
let thisMonth = this.getMonth()
|
||||||
let thisYear = this.getFullYear()
|
let thisYear = this.getFullYear()
|
||||||
|
@ -40,7 +39,7 @@ if (!Date.prototype.getFullWeek) {
|
||||||
//时间格式化
|
//时间格式化
|
||||||
if (!Date.prototype.format) {
|
if (!Date.prototype.format) {
|
||||||
Object.defineProperty(Date.prototype, 'format', {
|
Object.defineProperty(Date.prototype, 'format', {
|
||||||
value: function (str) {
|
value(str) {
|
||||||
let dt = {
|
let dt = {
|
||||||
fullyear: this.getFullYear(),
|
fullyear: this.getFullYear(),
|
||||||
year: this.getYear(),
|
year: this.getYear(),
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
if (!Map.groupBy) {
|
if (!Map.groupBy) {
|
||||||
Object.defineProperty(Map, 'groupBy', {
|
Object.defineProperty(Map, 'groupBy', {
|
||||||
value: function (arr, fn) {
|
value(arr, fn) {
|
||||||
return arr.groupToMap(fn)
|
return arr.groupToMap(fn)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
const NATIVE_TO_FIXED = Number.prototype.toFixed
|
const NATIVE_TO_FIXED = Number.prototype.toFixed
|
||||||
|
|
||||||
Object.defineProperty(Number.prototype, 'toFixed', {
|
Object.defineProperty(Number.prototype, 'toFixed', {
|
||||||
value: function (n) {
|
value(n) {
|
||||||
return NATIVE_TO_FIXED.call(this + Number.EPSILON, n)
|
return NATIVE_TO_FIXED.call(this + Number.EPSILON, n)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -18,7 +18,7 @@ Object.defineProperty(Number.prototype, 'toFixed', {
|
||||||
// 否则转为字符串类型
|
// 否则转为字符串类型
|
||||||
if (!Number.parse) {
|
if (!Number.parse) {
|
||||||
Object.defineProperty(Number, 'parse', {
|
Object.defineProperty(Number, 'parse', {
|
||||||
value: function (val) {
|
value(val) {
|
||||||
if (typeof val === 'number' || typeof val === 'string') {
|
if (typeof val === 'number' || typeof val === 'string') {
|
||||||
val += ''
|
val += ''
|
||||||
if (val.startsWith('0') && !val.startsWith('0.')) {
|
if (val.startsWith('0') && !val.startsWith('0.')) {
|
||||||
|
@ -47,7 +47,7 @@ if (!Number.parse) {
|
||||||
// 将字符串转为数字类型
|
// 将字符串转为数字类型
|
||||||
if (!Number.fromString) {
|
if (!Number.fromString) {
|
||||||
Object.defineProperty(Number, 'fromString', {
|
Object.defineProperty(Number, 'fromString', {
|
||||||
value: function (val) {
|
value(val) {
|
||||||
return +val || 0
|
return +val || 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
*/
|
*/
|
||||||
if (!Object.empty) {
|
if (!Object.empty) {
|
||||||
Object.defineProperty(Object, 'empty', {
|
Object.defineProperty(Object, 'empty', {
|
||||||
value: function (obj) {
|
value(obj) {
|
||||||
try {
|
try {
|
||||||
for (let i in obj) {
|
for (let i in obj) {
|
||||||
return false
|
return false
|
||||||
|
@ -23,7 +23,7 @@ if (!Object.empty) {
|
||||||
|
|
||||||
if (!Object.groupBy) {
|
if (!Object.groupBy) {
|
||||||
Object.defineProperty(Object, 'groupBy', {
|
Object.defineProperty(Object, 'groupBy', {
|
||||||
value: function (arr, fn) {
|
value(arr, fn) {
|
||||||
return arr.group(fn)
|
return arr.group(fn)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -31,7 +31,7 @@ if (!Object.groupBy) {
|
||||||
|
|
||||||
if (!Object.hasOwn) {
|
if (!Object.hasOwn) {
|
||||||
Object.defineProperty(Object, 'hasOwn', {
|
Object.defineProperty(Object, 'hasOwn', {
|
||||||
value: function (obj, key) {
|
value(obj, key) {
|
||||||
if (obj === null) {
|
if (obj === null) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ if (!Object.hasOwn) {
|
||||||
*/
|
*/
|
||||||
if (!Object.prototype.toParams) {
|
if (!Object.prototype.toParams) {
|
||||||
Object.defineProperty(Object.prototype, 'toParams', {
|
Object.defineProperty(Object.prototype, 'toParams', {
|
||||||
value: function () {
|
value() {
|
||||||
let params = ''
|
let params = ''
|
||||||
for (let k in this) {
|
for (let k in this) {
|
||||||
if (this[k] === void 0) {
|
if (this[k] === void 0) {
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
/**
|
||||||
|
* @author yutent<yutent.io@gmail.com>
|
||||||
|
* @date 2020/09/16 11:54:31
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!Set.prototype.union) {
|
||||||
|
// 类似 Array的concat, 合并2个集合, 返回1个新集合, 原集合不发生变化
|
||||||
|
Object.defineProperty(Set.prototype, 'union', {
|
||||||
|
value(other) {
|
||||||
|
let output = new Set([...this])
|
||||||
|
if (
|
||||||
|
other.size !== void 0 &&
|
||||||
|
other.has !== void 0 &&
|
||||||
|
other.keys !== void 0
|
||||||
|
) {
|
||||||
|
for (let it of other.keys()) {
|
||||||
|
output.add(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 同一批 API
|
||||||
|
// 返回不存在于另一个集合的所有元素集合
|
||||||
|
Object.defineProperty(Set.prototype, 'difference', {
|
||||||
|
value(other) {
|
||||||
|
let output = new Set()
|
||||||
|
for (let it of this) {
|
||||||
|
if (!other.has(it)) {
|
||||||
|
output.add(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 返回当前集合与给定集合中, 不同时存在的所有元素集合
|
||||||
|
Object.defineProperty(Set.prototype, 'symmetricDifference', {
|
||||||
|
value(other) {
|
||||||
|
let output = this.difference(other)
|
||||||
|
for (let it of other) {
|
||||||
|
if (!this.has(it)) {
|
||||||
|
output.add(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 返回共有的元素集合
|
||||||
|
Object.defineProperty(Set.prototype, 'intersection', {
|
||||||
|
value(other) {
|
||||||
|
let output = new Set()
|
||||||
|
|
||||||
|
for (let it of this) {
|
||||||
|
if (other.has(it)) {
|
||||||
|
output.add(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return output
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 判断当前集合是否为给定集合的子集
|
||||||
|
Object.defineProperty(Set.prototype, 'isSubsetOf', {
|
||||||
|
value(other) {
|
||||||
|
for (let it of this) {
|
||||||
|
if (!other.has(it)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 判断当前集合是否为给定集合的子超集
|
||||||
|
Object.defineProperty(Set.prototype, 'isSupersetOf', {
|
||||||
|
value(other) {
|
||||||
|
for (let it of other) {
|
||||||
|
if (!this.has(it)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 判断当前集合,是否与给定集合完全不重合
|
||||||
|
Object.defineProperty(Set.prototype, 'isDisjointFrom', {
|
||||||
|
value(other) {
|
||||||
|
for (let it of this) {
|
||||||
|
if (other.has(it)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断2个集合是否一致(仅元素相同, 无关顺序)
|
||||||
|
Object.defineProperty(Set.prototype, 'equal', {
|
||||||
|
value(other) {
|
||||||
|
return this.size === other.size && this.isSubsetOf(other)
|
||||||
|
}
|
||||||
|
})
|
|
@ -34,7 +34,7 @@ function compare(v1, v2) {
|
||||||
//类似于Array 的splice方法
|
//类似于Array 的splice方法
|
||||||
if (!String.prototype.splice) {
|
if (!String.prototype.splice) {
|
||||||
Object.defineProperty(String.prototype, 'splice', {
|
Object.defineProperty(String.prototype, 'splice', {
|
||||||
value: function (start, len, fill) {
|
value(start, len, fill) {
|
||||||
let length = this.length
|
let length = this.length
|
||||||
let argLen = arguments.length
|
let argLen = arguments.length
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ if (!String.prototype.splice) {
|
||||||
//同php的htmlspecialchars函数
|
//同php的htmlspecialchars函数
|
||||||
if (!String.prototype.htmlspecialchars) {
|
if (!String.prototype.htmlspecialchars) {
|
||||||
Object.defineProperty(String.prototype, 'htmlspecialchars', {
|
Object.defineProperty(String.prototype, 'htmlspecialchars', {
|
||||||
value: function (sign) {
|
value(sign) {
|
||||||
let str = this.replace(/&(?!\w+;)/g, '&')
|
let str = this.replace(/&(?!\w+;)/g, '&')
|
||||||
.replace(/</g, '<')
|
.replace(/</g, '<')
|
||||||
.replace(/>/g, '>')
|
.replace(/>/g, '>')
|
||||||
|
@ -89,7 +89,7 @@ if (!String.prototype.htmlspecialchars) {
|
||||||
//htmlspecialchars的还原
|
//htmlspecialchars的还原
|
||||||
if (!String.prototype.tohtml) {
|
if (!String.prototype.tohtml) {
|
||||||
Object.defineProperty(String.prototype, 'tohtml', {
|
Object.defineProperty(String.prototype, 'tohtml', {
|
||||||
value: function () {
|
value() {
|
||||||
return this.replace(/</gi, '<')
|
return this.replace(/</gi, '<')
|
||||||
.replace(/>/gi, '>')
|
.replace(/>/gi, '>')
|
||||||
.replace(/"/gi, '"')
|
.replace(/"/gi, '"')
|
||||||
|
@ -102,7 +102,7 @@ if (!String.prototype.tohtml) {
|
||||||
//简单的过滤xss
|
//简单的过滤xss
|
||||||
if (!String.prototype.xss) {
|
if (!String.prototype.xss) {
|
||||||
Object.defineProperty(String.prototype, 'xss', {
|
Object.defineProperty(String.prototype, 'xss', {
|
||||||
value: function () {
|
value() {
|
||||||
let str = this.htmlspecialchars('ENT_QUOTES')
|
let str = this.htmlspecialchars('ENT_QUOTES')
|
||||||
str = str
|
str = str
|
||||||
.replace(
|
.replace(
|
||||||
|
@ -118,7 +118,7 @@ if (!String.prototype.xss) {
|
||||||
// js特殊字符的转义
|
// js特殊字符的转义
|
||||||
if (!String.prototype.escape) {
|
if (!String.prototype.escape) {
|
||||||
Object.defineProperty(String.prototype, 'escape', {
|
Object.defineProperty(String.prototype, 'escape', {
|
||||||
value: function () {
|
value() {
|
||||||
return this.replace(/('|"|&|\\|\}|\{|\(|\)|;|=|\,|&)/g, '\\$1')
|
return this.replace(/('|"|&|\\|\}|\{|\(|\)|;|=|\,|&)/g, '\\$1')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -126,14 +126,13 @@ if (!String.prototype.escape) {
|
||||||
|
|
||||||
if (!String.prototype.at) {
|
if (!String.prototype.at) {
|
||||||
Object.defineProperty(String.prototype, 'at', {
|
Object.defineProperty(String.prototype, 'at', {
|
||||||
value: function (num) {
|
value(num) {
|
||||||
let n = +num
|
let n = +num
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
n += this.length
|
n += this.length
|
||||||
}
|
}
|
||||||
return this[n]
|
return this[n]
|
||||||
},
|
}
|
||||||
writable: true
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +142,7 @@ if (!String.prototype.at) {
|
||||||
*/
|
*/
|
||||||
if (!String.prototype.toJson) {
|
if (!String.prototype.toJson) {
|
||||||
Object.defineProperty(String.prototype, 'toJson', {
|
Object.defineProperty(String.prototype, 'toJson', {
|
||||||
value: function () {
|
value() {
|
||||||
let str = this.replace(/^\?/, '')
|
let str = this.replace(/^\?/, '')
|
||||||
let params = decodeURIComponent(str)
|
let params = decodeURIComponent(str)
|
||||||
.split('&')
|
.split('&')
|
||||||
|
@ -161,31 +160,31 @@ if (!String.prototype.toJson) {
|
||||||
// 用于版本号的比较
|
// 用于版本号的比较
|
||||||
if (!String.prototype.lt) {
|
if (!String.prototype.lt) {
|
||||||
Object.defineProperty(String.prototype, 'lt', {
|
Object.defineProperty(String.prototype, 'lt', {
|
||||||
value: function (v) {
|
value(v) {
|
||||||
return compare(this, v) === -1
|
return compare(this, v) === -1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(String.prototype, 'lte', {
|
Object.defineProperty(String.prototype, 'lte', {
|
||||||
value: function (v) {
|
value(v) {
|
||||||
return compare(this, v) < 1
|
return compare(this, v) < 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(String.prototype, 'gt', {
|
Object.defineProperty(String.prototype, 'gt', {
|
||||||
value: function (v) {
|
value(v) {
|
||||||
return compare(this, v) === 1
|
return compare(this, v) === 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(String.prototype, 'gte', {
|
Object.defineProperty(String.prototype, 'gte', {
|
||||||
value: function (v) {
|
value(v) {
|
||||||
return compare(this, v) > -1
|
return compare(this, v) > -1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.defineProperty(String.prototype, 'eq', {
|
Object.defineProperty(String.prototype, 'eq', {
|
||||||
value: function (v) {
|
value(v) {
|
||||||
return compare(this, v) === 0
|
return compare(this, v) === 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue