JavaScript对象的常见操作

工作也算是稳定了,不过理想和现实的差距还是很大。程序员的职责是把枯燥的工作自动化,而不是去进行重复劳动。最近在写 JavaScript 程序的时候,遇到了很多对象相关的操作。所以写点东西来总结下这半个月的成长。

# JavaScript 对象复制

JavaScript 对象默认全部是拷贝引用,也就是所谓的浅拷贝。所以我们在对象操作的时候,要记住是否需要进行拷贝。一般我们使用对象的时候,都是需要对其某个属性进行修改。所以正确的写法是:

const bar = { a: 1, b: 2, c: {d: 4}}
const foo = {...bar, b: 3}
foo.c.d =10
console.log(bar.c.d)
// { a: 1, b: 2, c: {d: 10}}
1
2
3
4
5

这样就同时进行拷贝和修改。注意这里使用的是 JavaScript 的 es6 语法。如果要在浏览器运行,你需要 Babel (opens new window) 来进行转换。注意,如果对象里面还有对象的话,这种方式也仅仅是浅拷贝。深拷贝必须遍历所有属性进行复制,在效率上有很大问题,所以我们尽量不要去用深度拷贝来解决问题。 这里对象的复制是使用的Object.assign (opens new window) 针对对象的简单类型可以进行复制,但是对象还是引用。如果实际的应用场景确实需要进行深度拷贝,可以使用Lodash (opens new window)。提供了很多常用的类库。

# JavaScript 数组

针对数组,现在已经不推荐用 for 循环来进行处理了,请使用数组的map (opens new window), filter (opens new window)reduce (opens new window)来处理数组的操作。相信这三个方法足以满足需求。

# JavaScript 开发规范

现在 JavaScript 已经是 es6 的时代,所以我们也需要顺应时代学习新知识。这里我建议大家读读 airbnb 的JavaScript Style Guide (opens new window)。这里不仅教会你正确的编码格式,更多的是优秀的写法。如何合理的拷贝对象,遍历数组等等。

目前就写到这里,工作之后并没有多少成长。写博客都发呆了很久该写什么。。。