【发布时间】:2015-03-30 18:08:37
【问题描述】:
我一直试图了解 this 值是如何在 javascript 中设置的,并且发现 ECMAScript 语言规范非常有用。我正在阅读 section 8.7 reference specification type 并发现 ECMAScript 中的引用由 3 个组件组成,base value、referenced name、strict reference flag 以了解 section 11.2.3。
我可以从他们的名字中假设referenced name 和strict reference flag 是什么,但我不明白base value 是什么。该文件说base value是undefined、String、Boolean、Number和Object,但它没有说明它是如何设置的以及它是什么。我猜它类似于上下文对象。谁能解释一下?
【问题讨论】:
-
就像@shashank 指出的那样,
this从它引用的任何对象继承typeof。我相信 JS 中的所有变量都是Prototype Object -
@Shashank:
this的值没有被转换,它不是一个特殊的对象或类型。this之所以特殊,是因为该值是直接从执行上下文引用的,而不是对应的环境记录。然而,该值就像任何其他值一样。这个问题实际上与this无关。