Object

本文详细解析了JavaScript中Object的概念,包括其作为无序成员集合的特性,成员的三种特征(ReadOnly, DontEnum, DontDelete, Internal),以及与Object相关的内部成员如[[Class]], [[Prototype]], [[Get]], [[DefaultValue]], [[Construct]]等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Object

除了5种原始类型外,一切都是Object,包括Object、Function、Array等等,他们的实例和构造器,都是Object。那 Object是一个什么东西呢?

Object是一个:无序的成员集合

它是一个集合,说明它包含0-n个成员。而它是无序的。

每一个成员由以下3个部分组成:名称、值、特征集合

下面的代码中:

var
 obj
 =
 {
'key'
:
 'value'
};
 

key就是成员名称,value就是值,obj这个Object从代码上看起来包含了一个成员,注意,是从代码上看而已。这里我们不去深究它先。

那特征集合是个什么东西呢?

javascript的对象成员可能包含下面几种特征的0个或多个:ReadOnly、DontEnum、DontDelete、 Internal。

  • ReadOnly:拥有这个特征的成员是不能被程序修改的。
  • DontEnum:拥有这个特征的成员是不能被for in遍历的。
  • DontDelete:拥有这个特征的成员是不能被delete操作删除的。
  • Internal:代表这个成员是内部成员。通常内部成员不能被程序以任何方式访问,但是有些javascript的引擎实现将它以特殊方式暴露,使得可以访问对象的某些内部成员。

一个对象的Internal成员以[[xxxx]]的方式来表示。

下面列一些和本博有关的的Object可能包含的internal成员。

  • [[Class]]:表示该对象的类型。比如function Object的[[Class]]成员的值是"Function"
  • [[Get]](PropertyName):获取对象的属性值。
  • [[DefaultValue]] (Hint):用于ToPrimitive进行类型转换时调用。hint参数可能的值为"string"或"number"
  • [[Prototype]]:[[Prototype]]成员实现了javascript中所谓的“原型链”。一个对象的[[Prototype]]成员可能是object对象,或者是null。只有Object.[[prototype]]为null,其他任何对象的[[Prototype]]成员都是一个Object
  • [[Call]]:function Object特有的成员,在函数被调用的时候,就是调用的[[Call]]。
  • [[Construct]]:function Object特有的成员,在函数作为构造器,被new操作符用于创建对象的时候,就是调用的[[Construct]]。
  • [[Scope]]:[[Prototype]]成员实现了javascript中所谓的“作用域链”。

------------------- 切割线 ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值