const obj = {}; const privateProperty = Symbol('private');解析
时间: 2024-09-11 07:10:02 浏览: 31
理解PHP5中static和const关键字的区别
在JavaScript中,`const obj = {};` 创建了一个空对象。当我们想要创建私有属性(即只能在该对象内部访问的属性)时,可以使用`Symbol`构造函数与一个描述符字符串结合来实现。`Symbol('private')`就是一个特殊的标识符,它代表一个独一无二的私有属性名称。
然而,由于`Symbol`类型的属性默认就是不可枚举的,这意味着它们不会出现在`Object.keys(obj)`或`for...in`循环中。要直接访问这个私有属性,我们可以这样定义:
```javascript
const obj = {
[privateProperty]: 'This property is private',
};
// 私有属性不能直接通过键名访问
// console.log(obj.privateProperty); // 报错或 undefined
// 但是可以通过点操作符或get方法间接访问
obj.getPrivateValue = function() {
return this[privateProperty];
};
console.log(obj.getPrivateValue()); // 输出: 'This property is private'
```
这里我们创建了一个辅助方法`getPrivateValue()`,用于从对象上读取私有属性。这是因为`Symbol`类型的属性不支持直接通过点操作符(`.`)访问,但可以通过对象自身的方法获取。
阅读全文