Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可配置:false允许更改可写标志,但不允许更改';可枚举的nt_Javascript_Browser_Ecmascript 6_Ecmascript 5 - Fatal编程技术网

Javascript 为什么可配置:false允许更改可写标志,但不允许更改';可枚举的nt

Javascript 为什么可配置:false允许更改可写标志,但不允许更改';可枚举的nt,javascript,browser,ecmascript-6,ecmascript-5,Javascript,Browser,Ecmascript 6,Ecmascript 5,我正在编写javascript程序,以了解设置为false的可配置标志如何影响属性。该计划是: let user={ name:"heman" }; Object.defineProperty(user, "name",{ configurable:false }); try{ Object.defineProperty(user, "name",{ configurable:true }) }//Throws error catch(err){conso

我正在编写javascript程序,以了解设置为false的可配置标志如何影响属性。该计划是:

let user={
    name:"heman"
};
Object.defineProperty(user, "name",{
    configurable:false
});
try{
    Object.defineProperty(user, "name",{
    configurable:true
    })
}//Throws error
catch(err){console.log(err)}
try{
    Object.defineProperty(user, "name",{
    enumerable:false
    });
} //Throws Error
catch(err){console.log(err)}

try{
    Object.defineProperty(user, "name", {
    writable:false
    });
} //Does'nt Throws Error. But Why?
catch(err){console.log(err)}
在这个程序中,我首先创建了一个名为user的对象,user包含一个属性,即name:“heman”。我将name属性的可配置标志设置为false(可配置:false)。然后我尝试再次将可配置标志更改为true,但它抛出了一个错误。在我尝试将enumerable标志更改为false(与默认值相反)之后,它再次抛出了一个错误。这一次,我试图将可写标志更改为false。标志已更改,但未引发任何错误。即使将可配置标志设置为false,为什么属性仍然是可配置的?为什么可写标志更改时没有抛出任何错误。我想知道在以下两种情况下会发生什么:

1) 可配置标志设置为true

2) 可配置标志设置为false

为什么可写标志更改时没有抛出任何错误

因为规范允许将数据属性上的
可写
标志从
true
更改为
false
,即使属性的
可配置
属性为
false
。可悲的是,规范并没有详细说明为什么事情是这样的,但它通常非常精确地说明了它们是什么。:-)

我想知道在以下两种情况下会发生什么:

你最好的办法就是去

1) 可配置标志设置为true

在这种情况下,您可以将
writeable
false
更改为
true
,或从
true
更改为
false
;该属性是完全可配置的

2) 可配置标志设置为false


规范允许将数据属性上的
可写
标志从
更改为
,但
更改为

我想澄清疑问。我知道我们说可写、可枚举和可配置是标志。但我们能说价值也是一种价值吗flag@user9218974-不,标志是真/假值。@MahdiYounesi-是一个糟糕的编辑,不应该被批准。这是蹩脚的英语,字段名称错误,并且删除了部分含义。@tryingToLearn-请查看上面的评论。