Javascript 断言属性是不可配置的
给定一个对象Javascript 断言属性是不可配置的,javascript,object,properties,assert,Javascript,Object,Properties,Assert,给定一个对象obj,如何断言其属性prop是不可配置的 首先,我想我可以使用getOwnPropertyDescriptor: if(Object.getOwnPropertyDescriptor(obj,prop).configurable) 抛出错误(“属性是可配置的”); 但这并不是万无一失的,因为它可以被修改: var getDescr=Object.getOwnPropertyDescriptor; Object.getOwnPropertyDescriptor=函数(){ var
obj
,如何断言其属性prop
是不可配置的
首先,我想我可以使用getOwnPropertyDescriptor
:
if(Object.getOwnPropertyDescriptor(obj,prop).configurable)
抛出错误(“属性是可配置的”);
但这并不是万无一失的,因为它可以被修改:
var getDescr=Object.getOwnPropertyDescriptor;
Object.getOwnPropertyDescriptor=函数(){
var ret=getDescr.apply(这是参数);
ret.configurable=false;
返回ret;
};
有一个简单的方法吗?假设
obj
是一个(这可能不可靠,请参见),您可以使用
当delete
与对象属性一起使用时,它返回调用内部方法的结果
如果属性是可配置的,[[Delete]]将返回true
。否则,它将在严格模式下抛出TypeError
,或在非严格模式下返回false
因此,要断言prop
是不可配置的
- 在非严格模式下:
功能资产不可配置(obj、prop){ 如果(删除对象[prop]) 抛出错误(“属性是可配置的”); }
- 在严格模式下:
功能资产不可配置(obj、prop){ "严格使用",; 试一试{ 删除obj[prop]; }捕捉(错误){ 返回; } 抛出错误(“属性是可配置的”); }