随着技术的发展,JavaScript 也在不断更新,ES12 是 JavaScript 的最新标准之一。在 ES12 中,许多内置函数都新增了一些新的属性,这些属性可以帮助开发者更加方便地处理数据和开发应用。本文将介绍 ES12 标准下的内置函数的新属性,以及对属性设置的技巧。
Array.from()
Array.from()
是一个将类数组对象或可迭代对象转换成数组的方法。在 ES12 中,Array.from()
新增了第二个可选参数,用于指定转换后的数组的类型。可选的类型有 ArrayBuffer
、Int8Array
、Uint8Array
、Uint8ClampedArray
、Int16Array
、Uint16Array
、Int32Array
、Uint32Array
、Float32Array
、Float64Array
。例如,将一个类数组对象转换成 Int32Array
类型的数组:
const obj = { 0: 1, 1: 2, 2: 3, length: 3 }; const arr = Array.from(obj, x => x * 2, Int32Array); console.log(arr); // Int32Array(3) [2, 4, 6]
String.prototype.replaceAll()
String.prototype.replaceAll()
是一个全局替换字符串中所有匹配项的方法。在 ES12 中,String.prototype.replaceAll()
新增了一个可选的第二个参数,用于指定替换的最大次数。例如,将一个字符串中的所有空格替换成逗号:
const str = 'hello world'; const newStr = str.replaceAll(' ', ',', 1); console.log(newStr); // 'hello,world'
Promise.any()
Promise.any()
是一个接收一组 Promise 对象并返回一个新的 Promise 对象的方法。在 ES12 中,Promise.any()
新增了一个可选的第二个参数,用于指定是否忽略被拒绝的 Promise 对象。例如,只要有一个 Promise 对象被解决,就立即返回:
-- -------------------- ---- ------- ----- -------- - - ------------------ ----------------- ---------------------------- ------------------ ----------------- --------------------------- -- --------------------- - ----------------- ---- -------------- -- - -------------------- -- ---------- ---展开代码
Object.fromEntries()
Object.fromEntries()
是一个将键值对数组转换成对象的方法。在 ES12 中,Object.fromEntries()
新增了一个可选的第二个参数,用于指定对象的原型。例如,将一个键值对数组转换成一个具有自定义原型的对象:
const entries = [ ['a', 1], ['b', 2] ]; const obj = Object.fromEntries(entries, { __proto__: { c: 3 } }); console.log(obj); // { a: 1, b: 2, c: 3 }
BigInt
BigInt
是 JavaScript 中的一种新的原始数据类型,用于表示任意精度的整数。在 ES12 中,BigInt
新增了一些新的属性和方法。例如,BigInt.asIntN()
和 BigInt.asUintN()
可以将一个 BigInt
实例转换成指定位数的有符号整数或无符号整数。例如,将一个 BigInt
实例转换成 32 位有符号整数:
const bigInt = BigInt('12345678901234567890'); const num = BigInt.asIntN(32, bigInt); console.log(num); // 3522556858n
总结
ES12 标准下的内置函数的新属性为开发者提供了更加灵活的数据处理方式。使用这些新属性可以让我们更加方便地开发应用程序。在使用这些新属性时,我们需要注意参数的设置,以及数据类型的转换。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6600069cd10417a222b4661b