有很多方法来创建新的JavaScript对象。在这篇文章中,我们将使用流畅的接口模式!在流畅的接口模式中,我们使用带有定义方法的类来为我们的对象添加属性。
在下面的例子中,我们创建了一个PersonBuilder 类。在constructor ,我们创建一个空的person 属性。然后,我们有一些额外的方法,叫做withName 和withAge ,这些方法允许我们分别给我们的人一个名字和年龄。
最后,我们有一个build 方法。这只是返回我们的person 对象,表示我们已经完成了构建。
class PersonBuilder {
constructor() {
this.person = {};
}
withName(name) {
this.person.name = name;
return this;
}
withAge(age) {
this.person.age = age;
return this;
}
build() {
return this.person;
}
}
请注意,我们在withName 和withAge 方法中返回this --这将返回当前实例,允许我们继续使用连锁方法。
我们的类的实现最终是这样的。
const person = new PersonBuilder().withName('Daffodil').withAge(25).build();
console.log(person);
// { name: "Daffodil", age: 25 }
就这样,我们现在有了一个人的对象
为什么要用这种方式构建对象?
流畅的接口模式肯定会很冗长,但它有一个好处,就是很难在你的对象上设置一个错误的属性--你只能通过你的类的方法来设置对象的道具。如果你的对象有很多属性,或者你需要一个方便的方法来生成一堆不同的对象(例如,用于生成测试用例),这就特别方便了。