JavaScript高级程序设计 第三版 勘误_JavaScript高级程序设计书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 程序 > JavaScript高级程序设计 > JavaScript高级程序设计 第三版 勘误
zenis JavaScript高级程序设计 的书评 发表时间:2013-11-03 14:11:54

JavaScript高级程序设计 第三版 勘误

看到第六章了发现了一些问题,我会将自己陆陆续续发现的一些问题列出来供大家讨论。
我自己的测试环境:
操作系统 : Windows 7
浏览器版本: IE 10, FF 24.0, Chrome 31.0.1626.1 m Aura
以后的讨论都基于这个版本。

【1】
P140 中间那段,“一旦把属性定义为不可配置的,就不能再把它变回可配置。此时,再调用Object.defineProperty()方法修改除writable之外的特性,都会导致错误”。
我在自己的PC上实验了一下,
这三个浏览器的表现一致,如下
将configurable设置为false之后:
(1) 可以继续将writable从true设置为false,但是不能将writable从false设置为true
(2) 可以使用person.name="greg"修改perosn.name的值,并且修改生效
我查了一下 ECMA-262 5th标准,其对configurable有如下描述:
If false, attempts to delete the property, change the property to be an accessor property, or change its attributes (other than [[Value]) will fail. 说的是不可以修改除了Value之外的其他的属性。
我查了下英文原版的这本JS 高级程序设计,中文翻译确实是按照英文版本的来的,不知道是不是英文版的作者就写错了?


【2】
P140最后一段,“在调用Object.defineProperty()方法时,如果不指定,configurable,enumerable,writable特性的默认值都是false”
这句说的很模糊,不知道什么意思,是说我在调用这个方法如果不显示指明configurable的值那么其就是false的意思吗?我测试了一下不是这样啊,在ECMA-262标准上也没有找到出处。
我在自己的PC上测试,发现对于数据属性,其默认的configurable和enumerable属性为true,而对于访问器属性,器enumberable和configurable属性值为false,看样子浏览器就是根据是否为这个属性定义了getter和setter来判断这个属性是数据属性还是访问器属性的。



展开全文
有用 5 无用 2

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“JavaScript高级程序设计 第三版 勘误”的回应

拿去生活 2015-01-22 23:38:30

就第一个我有疑问,我用Chrome测试,将configurable设置为false之后,修改person.name属性后,代码不会生效,alert出来的仍然是原来的name值

zenis 2014-04-21 16:18:45

你没有理解我的意思,我的浏览器的表现结果与ECMA标准所规定的一致,但是与书上写的不一致。

heer 2014-04-19 13:38:00

你使用的浏览器并不一定严格按照ECMA标准实现