难以理解JavaScript中的基本对象工作
Trouble understanding basic object workings in JavaScript
我正在学习JavaScript,我正在使用的书中有一个我不明白的例子。是这样的:
var chineseBox = {};
chineseBox.content = chineseBox;
然后,本书列出了两个表达式及其值。首先,"content' in chineseBox;
返回true
.然后,我没有得到的那个,"content" in chineseBox.content
它也返回true
.我认为如果第二个表达式的计算结果为 false
,指向前面定义的空chineseBox
对象会更自然。有理由这样工作吗?此功能的实际含义是什么?如何探索对象的更深层次?chineseBox.content.content
对吗?
我认为如果第二个表达式的计算结果为
false
,指向之前定义的空chineseBox
对象,那会更自然。
它不再是空的了。截至chineseBox.content = chineseBox
,它现在有一个属性。
将对象引用分配给事物(变量、属性等)时,存储的值是对对象的引用,而不是对象的副本。因此,chineseBox
(变量)和chineseBox.content
(属性)都指向同一个对象,该对象具有一个名为 content
的属性。
让我们在这里抛出一些ASCII艺术:
var chineseBox = {};
这给了我们:
+−−−−−−−−−−−−−−−−−−−−−−−+|中文盒 (可变) |+−−−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−+|值 |−−−−−−−−−−−−−−>| (对象) |+−−−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−+ | | +−−−−−−−−−−−−−−−+
现在我们做到了
chineseBox.content = chineseBox;
。我们有:
/−−−−−−−−−−−''+−−−−−−−−−−−−−−−−−−−−−−−+ | ||中文盒 (可变) | V |+−−−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−+ ||值 |−−−−−−−−−−−−−−>| (对象) | |+−−−−−−−−−−−−−−−−−−−−−−−+ +−−−−−−−−−−−−−−−+ | | 内容 |−−−−−/ +−−−−−−−−−−−−−−−+
只有一个对象。有两个引用指向它。
chineseBox.content
是对chineseBox
的引用;重要的是它是一个引用,因为这意味着将来对chineseBox
的任何更改也可见于chineseBox.content
引用中。
当您将chineseBox.content
设置为 chineseBox
时,chineseBox
对象确实为空;但是chineseBox
是一个引用,一旦您设置 content
属性,它就会更新以反映这一点。
见chineseBox.content === chineseBox // true
chineseBox.content = chineseBox;
表示chinesesBox.content
点回到chineseBox
。所以是的,你可以去chineseBox.content.content.content
等,因为每次你都要回到根元素
'content' in chineBox.content
的计算结果为true,因为content
指向原始chineseBox
对象(chineseBox.content --> chineseBox)。
chineseBox.content.content
,chineseBox.content.content....content
都是有效的,因为您引用的是同一个对象。
- 读取在具有IE的工作程序中生成的对象URL
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- JSON.stringify没有'在更改的对象上无法按预期工作.如何处理
- 如何让我的正则表达式代码在我的dojo cellWidget对象上工作
- dropable的Over事件是't工作正常,在可拖动对象被拖放到贪婪的可拖动对象上并再次拖动后
- 地图如何在 Ecmascript 6 中使用对象键工作
- 了解 JavaScript 对象实例或工作流
- JavaScript 返回对象未按预期工作
- 如何让、要求和原型协同工作以在 javascript 中制作对象
- 谷歌应用程序脚本-正在尝试使用getUrl.TypeError:在对象工作表中找不到函数getUrl
- 一个对象怎么能像返回自身和另一个对象一样工作
- "键“;jQuery中的对象无法正常工作
- 对象引用的隐式传递是如何工作的
- dojo类对象的工作原理
- app.use(restify.bodyParser())无法工作,因为req对象为空
- 难以理解JavaScript中的基本对象工作
- jquery .after 不对非追加对象工作
- Couchdb _design/doc/_update/push未作为对象工作
- 如何使此CoffeeScript对象工作
- 事件链是如何为多个对象工作的