在验证书中的ECMAScript属性类型的知识点的时候,遇到以下问题,先看代码;
求解
"use strict";
var person = new Object();
person.name = "liang";
alert(person.name);
Object.defineProperty(person,"name",{
value:"dong"
});
alert(person.name);
person.name = "shang";
alert(person.name);
在《Javascript高级程序设计第三版》中有这么一句话:在调用Object.defineProperty()方法之后,如果不指定,那么configurable,enumerable和writable默认为false。
那么在以上代码中,我刚开始初始化name为liang,然后调用了defineProperty()方法之后,设置name的值为dong,以上符合逻辑。那么我在调完这个方法之后,按照书中所说,我没有设定其他属性特性的值,也就是都默认为false,那么我在下面,再次修改name的值为dong,为什么仍然可以修改呢?并且在严格模式下,也没有出错