ES5_1、属性的描述对象和defineProperty函数
属性的描述对象
描述对象指的是:通过Object.create方法或者使用{}创建对象时,属性的描述的结构,也就是用来描述属性的对象,这个对象里面包括了属性的值和属性的一些特性。如:
//第一个参数是原型对象,第二个参数是描述对象,也就是这个对象的属性。
let obj=Object.create(null,{
hello:{
//设置hello属性的值
value:"哈喽",
//设置属性特性,比如:
writable:true,//是否可写
configurable:true,//是否可以删除
enumerable:true//是否可以枚举
},
sayHi:{
value:function(){console.log("嗨~")}
}
});
console.log(obj.hello);
obj.sayHi();
Object.defineProperty();
给对象添加属性,第一个参数:要给谁添加属性,第二个参数:属性值。第三个参数:属性的描述对象。通过这个方法添加的属性不可以枚举(也就是不可以被遍历),除非在配置对象里进行了设置。
let person={
name:"张三",
age:18
}
let change="男";
Object.defineProperty(person,"sex",{
//value:"男",
enumerable:true,//设置该属性是否可以枚举
//writable:true,//设置属性值是否可以修改
configurable:true,//设置属性是否可以被删除
//有get配置项存在则不能有value、writable等配置项存在
get:function(){//当sex属性被读取的时候get函数(get函数一般叫getter)就会被调用,返回值就作为该sex属性的属性值。
console.log("有人读取了sex属性");
return change;
},
set:function(value){//当修改了sex属性的值时,set函数(setter)就会被调用,且参数就是修改的值。
console.log("有人修改了sex属性,且修改的值为:"+value);
change=value;
}
});
console.log(person);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构