JavaScript-读 You Dont Know JS, Object到底是什么

本文深入探讨了JavaScript中的对象,包括数据类型、创建对象的方式、对象属性的特性,如[[Enumerable]]对遍历的影响,以及浅拷贝和深拷贝的概念。通过对对象属性特性的分析,帮助读者理解JavaScript中对象的本质。
摘要由CSDN通过智能技术生成

这篇博客是读You Dont Know JS系列书中this & Object Prototypes这本书后总结的第二篇博客(第一篇讲this到底是什么)。
这篇博客讲对象,其中会涉及到一些让我们困惑已久的问题,比如:对象的数据属性和访问器属性,对象属性(property)的特性(attribute)。

数据类型

关于对象你首先需要知道,JavaScript中“一切都是对象”这句话是错的。JavaScript中数据类型有六种:

  • string
  • number
  • boolean
  • null
  • undefined
  • object

JavaScript中存在几种内建对象:
* String
* Number
* Boolean
* Object
* Function
* Array
* Date
* RegExp
* Error
我们之所以可以调用'abc'.charAt(1)是因为string类型在这种情况下会自动转换成String。这是一个很基础的点,不过多展开。

创建对象

创建对象两种方式:

  • 对象字面量
  • 构造函数
// 对象字面量
var obj = {
    key: value
    };

// 构造函数
var obj = new Object();
obj.key = value;

对象属性(property)的特性(attribute)

对象的属性看起来像是在对象上,但其实引擎会根据自己的实现来存储这些值,而且通常不是放在对象内部,对象内存储的是这些属性的名称,它们像指针一样指向存储的地方,技术上讲,叫引用(reference)。

什么是特性

对象的属性分为两类:数据属性和访问器属性。数据属性就是存有一个值或者一个引用的属性,访问器属性是,在读取该属性时会调用其内部的getter函数,这个函数负责返回有效值,在写入该属性值会调用其内部的setter函数,这个函数负责决定如何写入新值。

不管是数据属性还是访问器属性,都有一些描述这些属性的“文档”,这些“文档”以对象的形式存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值