目录正文正文 了解了获取对象属性的基本方式,在当前对象中不存在的属性,会沿着对象的原型链不断往上查找目标属性,直至找到或到Object.prototype都不存在而结束查找。 思考如
了解了获取对象属性的基本方式,在当前对象中不存在的属性,会沿着对象的原型链不断往上查找目标属性,直至找到或到Object.prototype
都不存在而结束查找。
思考如下代码:
myObject.foo = 100
当我们设置对象的某个属性,也可能会出现类似的问题。
有几种情况:
我们先来说下最常见,也最简单的场景:
属性仅存在于当前对象中,而原型链中不存在,且属性在对象中是可写的,那需要做的仅仅是赋值操作,改变属性值即可。
还有种情况,处理方式也比较简单:当前对象和原型链上都不存在该属性,且是可写的,那会在最底层,也就是当前对象新增这个属性,并赋值。
如果在当前对象和原型链中都存在,就会发生屏蔽,会优先选择最底层对象属性。也就是说只要当前对象属性可以被赋值,那就对当前对象属性值进行操作;如果原型链对象上的该属性是被设置了可读,那当前对象并未进行修改,则不可操作,严格模式下,还会报错。
最后一种情况,如果属性不存在与当前对象而仅出现在原型链对象中,属性均可写,那会如何呢?
思考如下代码:
const myObject = {
foo: 100
}
const createObject = Object.create(myObject)
createObject.foo = 200
console.log(myObject.foo, createObject.foo) // 100 200
正常来说,如果没有createObject.foo
操作,则createObject对象是空的,不存在foo属性,赋值操作后,从打印的结果可以看出,它会给当前新对象创建新属性并赋值,且原型指向的对象不会受当前对象赋值的影响。
以上就是javascript对象属性设置和屏蔽技巧的详细内容,更多关于JavaScript对象属性设置屏蔽的资料请关注编程网其它相关文章!
--结束END--
本文标题: JavaScript对象属性设置和屏蔽技巧
本文链接: https://www.lsjlt.com/news/194342.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0