企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 属性的设置和屏蔽 给对象设置属性,并不是添加一个新属性值,或者更新已有属性值,它分为3种情况 ``` const anotherObj = {a: 1} var obj = object.create(anotherObj) obj.a = 1 ``` 1. 原型链上有**同名**的属性 a,并且**不是只读**的属性,那么在 obj.a 赋值时,会在obj中添加一个属性啊, 并且a是一个**屏蔽属性** ![](https://img.kancloud.cn/40/65/4065d82853623bb420b7020847ef251e_1636x344.png) 2. 原型链上有**同名**的属性 a,并且**是只读**的属性,那么在 obj.a 赋值时,无法创建属性,也无法修改已有属性 ``` var user = {}; Object.defineProperty(user,"name",{ value:"狂奔的蜗牛", writable:false }) var myObj = Object.create(user) myObj.name = "coco" console.log(myObj.name) // 狂奔的蜗牛 ``` 3. 原型链上有**同名**的属性 a,并且是 setter,那么在 obj.a 赋值时,无法创建属性,也无法重新定义 obj 的setter