繁体   English   中英

方法preventExtensions javascript和defineProperty

[英]method preventExtensions javascript and defineProperty

首先,大家好,对不起我的英语。
我仍然会利用这个社区的专业知识和可用性。
我的问题已经解决,尝试在preventExtensions方法之后向对象添加属性。
我知道此方法的工作原理,该方法使对象不可扩展,我无法向该对象添加任何属性
我的问题是:为什么如果我尝试以这种方式添加属性(obj.prop),则控制台中不会发现任何错误,并且该属性将无法定义,
但是,如果我尝试使用Object.defineproperty方法添加新属性,则会在控制台中发现错误?

<script>
       var obj={}
       Object.preventExtensions(obj)
       // i can not add other properies to this object
       console.log(Object.isExtensible(obj))//false

       // why if i try to add a property in this way i'll find undefined
       obj.b='bbb'
       console.log(obj.b)

       // and in this way i'll find an error
       Object.defineProperty(obj, 'w', { enumerable: true,configurable:true,writable:true,value:'www' });
</script>

基本上我的问题是关于obj.prop和Object.defineProperty之间的不同行为
任何建议都会很高兴地阅读,谢谢大家。

我想这种行为是特定于浏览器的。 甚至文档也对此主题含糊不清。

尝试将新属性添加到不可扩展的对象将失败, 无论是无提示还是通过抛出TypeError (在严格模式下,这都是最常见的,但不是排他的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM