ES9 标准(也称为 ECMAScript 2018)是 JavaScript 语言的最新版本,在 ES9 中引入了一些新的对象方法,同时也对已有的方法进行了升级和扩展。这些新的方法为我们提供了更加便捷、高效的编程方式,但在一些情况下,Lodash 也提供了类似的功能。本文将介绍 ES9 标准的对象方法与 Lodash 的对比使用,并给出详细的示例代码。
Object.values 和 _.values
Object.values
是 ES9 标准中新引入的方法,它返回一个给定对象自身可枚举属性的属性值数组。比如:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.values(obj)); // ["bar", 42]
类似的,Lodash 中也提供了 _.values
方法,实现了相同的功能:
const obj = { foo: 'bar', baz: 42 }; console.log(_.values(obj)); // ["bar", 42]
ES9 标准中的 Object.values
更加简单明了,并且不需要额外引入库,推荐使用。
Object.entries 和 _.toPairs
Object.entries
是 ES9 标准中新引入的方法,它返回一个给定对象自身可枚举属性的键值对数组。比如:
const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [["foo", "bar"], ["baz", 42]]
类似的,Lodash 中提供了 _.toPairs
方法,实现了相同的功能:
const obj = { foo: 'bar', baz: 42 }; console.log(_.toPairs(obj)); // [["foo", "bar"], ["baz", 42]]
ES9 标准中的 Object.entries
更加简单明了,并且不需要引入额外的库,推荐使用。
Object.getOwnPropertyDescriptors 和 _.cloneDeep
Object.getOwnPropertyDescriptors
是 ES9 标准中新引入的方法,它返回一个给定对象自身属性的描述对象。这个方法可以用于实现对象的深拷贝,示例如下:
const obj = { foo: 'bar', baz: { qux: 42 } }; const cloneObj = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj)); console.log(cloneObj === obj); // false console.log(cloneObj.foo === obj.foo); // true console.log(cloneObj.baz === obj.baz); // false
需要注意的是,在上面的示例中,我们使用了 Object.defineProperties
方法来实现对象的深拷贝。这是因为 Object.assign
方法和扩展运算符 ...
只能实现浅拷贝。
Lodash 中的 _.cloneDeep
方法也可以用于实现对象的深拷贝:
const obj = { foo: 'bar', baz: { qux: 42 } }; const cloneObj = _.cloneDeep(obj); console.log(cloneObj === obj); // false console.log(cloneObj.foo === obj.foo); // true console.log(cloneObj.baz === obj.baz); // false
由于深拷贝是一个较为常用的操作,Lodash 的 _.cloneDeep
方法更受欢迎一些。
Object.fromEntries 和 _.fromPairs
Object.fromEntries
是 ES9 标准中新引入的方法,它以键值对数组为参数,返回一个新的对象。比如:
const entries = [['foo', 'bar'], ['baz', 42]]; console.log(Object.fromEntries(entries)); // { foo: 'bar', baz: 42 }
类似的,Lodash 中提供了 _.fromPairs
方法,实现了相同的功能:
const entries = [['foo', 'bar'], ['baz', 42]]; console.log(_.fromPairs(entries)); // { foo: 'bar', baz: 42 }
ES9 标准中的 Object.fromEntries
更加简单明了,并且不需要引入额外的库,推荐使用。
总结
ES9 标准中引入的新对象方法提供了一些便捷、高效的编程方式。虽然 Lodash 已经提供了类似的功能,但在实际开发中,我们应该优先考虑使用 ES9 标准中的方法,避免引入额外的库。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6478175f968c7c53b045cace