为了真正理解 Javascript,而不是复制和粘贴 Javascript googler,我正在阅读 Eloquent Javascript 电子书,并且碰巧遇到了以下示例:
var chineseBox = {};
chineseBox.content = chineseBox;
show("content" in chineseBox);
show("content" in chineseBox.content);
令人惊讶的是,它们都输出true
. 这本书本身声称,“运算符in
可用于测试对象是否具有某种属性。它产生一个布尔值。”
我知道这show("content" in chineseBox);
是在寻找content
它确实拥有的属性,它的价值是chineseBox
. 但是,为什么第二个show()
工作?
为了进一步测试,我尝试了:
show("content" in chineseBox.content.content); //true
show("contents" in chineseBox.contents.content); //type error: undefined
show("contents" in chineseBox.content.contents); // invalid "in" operand
问题基本上是,变量 chineseBox{} 没有 content 属性......还是有?