ECMA-262规范中"member"是否等同于"child"?
ECMA-262规范中"member"术语的含义澄清
我在阅读ECMA-262规范时,对开篇定义里"member"的用法感到困惑,规范中有两处相关定义:
4.4.5 primitive value - member of one of the types Undefined, Null, Boolean, Number, BigInt, Symbol, or String as defined in clause
4.4.6 object - member of the type Object
我之前对相关术语的理解是:
- Member:类型或类中的引用,例如方法或属性
- Child:继承自当前类型或类的类型或类
因此我想确认:规范中的"member"是否意为"child"?从类型链来看,派生自Object的对象为何是Object类型的"member",这让我无法理解。
澄清:这里的"member"是集合成员的意思,和你之前的理解完全不同
ECMA-262在这里使用的"member"是集合论范畴的术语,指某个值属于一个类型对应的集合,和面向对象里的"成员(属性/方法)"、"子类(child)"没有关系。
举个直白的例子:
- 比如
"hello"这个字符串值,就是String类型集合的一个member; {}这个对象值,就是Object类型集合的一个member;- 所有数组、函数、自定义对象,本质上都属于Object类型的集合,所以它们都是Object类型的member。
规范里的"类型"在这里指的是值的分类集合,某个值是这个集合里的一员,就被称为该类型的member。这和继承关系里的"child"完全是两个概念——你不需要纠结派生类和父类的关系,只需要理解:所有对象值都归属于Object类型这个大集合,所以都是它的member。
内容的提问来源于stack exchange,提问作者Jamie Marshall
相关产品推荐
相关产品推荐

