js实现属性
属性定义与访问
在JavaScript中,对象的属性可以通过点符号或方括号访问。属性可以是数据属性或访问器属性(getter/setter)。
const obj = {
// 数据属性
dataProp: 'value',
// 访问器属性
get accessorProp() {
return this.dataProp;
},
set accessorProp(value) {
this.dataProp = value;
}
};
属性描述符
通过Object.defineProperty()可以精确控制属性特性:

configurable: 是否可删除或修改特性enumerable: 是否出现在for...in循环中value: 属性值writable: 是否可修改值get: getter函数set: setter函数
Object.defineProperty(obj, 'newProp', {
value: 42,
writable: false,
enumerable: true
});
动态属性名
ES6允许使用表达式作为属性名:
const propName = 'dynamic';
const obj = {
[propName + 'Key']: 'value'
};
属性存在性检查
使用in运算符或hasOwnProperty()方法检测属性是否存在:

'dataProp' in obj; // true
obj.hasOwnProperty('accessorProp'); // true
属性枚举
获取对象所有可枚举属性:
Object.keys(obj); // 返回自有可枚举属性键数组
for (const key in obj) {
console.log(key);
}
属性删除
使用delete操作符移除对象属性:
delete obj.dataProp; // 返回true表示成功






