在JavaScript中,对象是一种复合数据类型,它可以包含多个键值对,其中键(属性名)通常是字符串(在ES6中也可以是Symbol),而值则可以是任何JavaScript数据类型,包括其他对象、数组、函数等。
Symbol()
函数创建,每个Symbol值都是唯一的。// 字符串属性名
let person = {
name: 'Alice',
age: 25
};
// 添加属性
person.gender = 'female';
// 修改属性
person.age = 26;
// 删除属性
delete person.gender;
// Symbol属性名
let sym = Symbol('id');
let obj = {
[sym]: 123
};
// 访问Symbol属性
console.log(obj[sym]); // 输出: 123
// Symbol属性的唯一性
let sym2 = Symbol('id');
console.log(sym === sym2); // 输出: false
let privateMethod = Symbol('privateMethod');
class MyClass {
constructor() {
this[privateMethod] = () => {
console.log('This is a private method');
};
}
publicMethod() {
this[privateMethod]();
}
}
let instance = new MyClass();
instance.publicMethod(); // 输出: This is a private method
console.log(instance[privateMethod]); // 输出: undefined (无法直接访问Symbol属性)
在上面的例子中,privateMethod
是一个Symbol属性,它被用来模拟一个私有方法,因为Symbol属性不会被常规的对象属性枚举方法(如for...in
循环)所枚举到。
领取专属 10元无门槛券
手把手带您无忧上云