在书中Javascript的好部分,在Ch3对象的开头页面上,它指出:
对象是属性的容器,其中属性具有名称和值.属性名称可以是任何字符串,包括空字符串.属性值可以是除undefined之外的任何Javascript值.
注意:书中突出显示未定义,表示这是一个文字.
然而,在实践中,我能够做到这一点.
var a = { "name": undefined };
Run Code Online (Sandbox Code Playgroud)
我的理解有什么问题?
我相信答案是他错了.
如您所见,您可以设置var a = { "name": undefined };.
a.name === undefineda.name === a.someFakeProperty不过,这里有不同之处:
'someFakeProperty' in a === false'name' in a === true或者,以不同的方式做,
a.hasOwnProperty('someFakeProperty') === falsea.hasOwnProperty('name') === true使用有点臭名昭着的for..in循环,
for (var i in a) {
alert(i);
}
Run Code Online (Sandbox Code Playgroud)
......会给你的name.
因此,根据价值,您可能无法区分undefined和undefined,但它们在内部完全不同.
另外:他对房产名称也是错的 - 如评论中所述,属性名称被转换为字符串,所以我错了这一点.a[window] = 43; a[window] == 43;很好.当然,你不能这样做a.window,但a.___只是语法糖a['___'].
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |