类字段(Class Fields)是JavaScript中ES6引入的一个特性,允许在类定义中直接声明实例属性。类字段默认值是指在类定义中为实例属性设置的初始值。
类字段默认值可以是任何有效的JavaScript表达式,包括基本类型(如字符串、数字、布尔值)、对象、数组等。
类字段默认值常用于以下场景:
class Person {
name = 'John Doe';
age = 30;
hobbies = ['reading', 'traveling'];
constructor(name, age) {
this.name = name || this.name;
this.age = age || this.age;
}
}
const person1 = new Person();
console.log(person1); // { name: 'John Doe', age: 30, hobbies: ['reading', 'traveling'] }
const person2 = new Person('Alice', 25);
console.log(person2); // { name: 'Alice', age: 25, hobbies: ['reading', 'traveling'] }
问题1:类字段默认值在某些旧版浏览器中不支持
问题2:类字段默认值在某些情况下可能导致意外的行为
class Person {
#defaultHobbies = ['reading', 'traveling'];
hobbies = this.#defaultHobbies;
constructor(hobbies) {
if (hobbies) {
this.hobbies = hobbies;
}
}
}
const person1 = new Person();
console.log(person1); // { hobbies: ['reading', 'traveling'] }
const person2 = new Person(['swimming']);
console.log(person2); // { hobbies: ['swimming'] }
通过以上信息,您可以更好地理解类字段默认值的基础概念、优势、类型、应用场景以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云