JavaScript对象类型Object详解:基础、全局与包装对象

作者:函数茶馆

时间:2026-10-30

浏览:666

本文深入解析JavaScript中Object类型的核心机制。涵盖Object作为所有对象基础的原型属性与方法,如hasOwnProperty和toString。介绍全局对象在初始化时注入的全局属性、函数及构造函数。详细阐述字符串、数字等原始值如何通过包装对象(String、Number等)实现属性访问,并区分原始值与引用类型的比较逻辑。

文章目录

Object类型的基础属性与方法

在ECMAScript规范中,对象被定义为一组数据与功能的集合。Object类型构成了所有JavaScript对象的基础层级。理解这一概念的关键在于:Object类型所具备的属性和方法,同样存在于其所有具体实例中。具体而言,Object的实例默认拥有以下属性和方法: 1. Constructor:该属性保存着用于创建当前对象的构造函数引用。 2. hasOwnProperty(propertyName):此方法用于检测给定的属性是否存在于当前对象实例中,而非其原型链上。需要注意的是,传入的参数必须为字符串形式的属性名。 3. isPrototypeOf(object):用于判断传入的对象是否为另一个对象的原型。 4. toLocalString():返回对象的字符串表示形式,该字符串与执行环境相关。 5. toString():返回对象的字符串表示形式。 6. valueOf():返回对象的字符串、数字或布尔值表示,其返回值通常与toString()方法一致。

全局对象及其初始属性

全局对象在JavaScript运行环境中扮演着核心角色。全局对象的属性即为全局定义的符号,JavaScript程序可直接访问这些符号。当解释器启动时,会自动创建一个新的全局对象,并为其注入一组初始属性,主要包括: - 全局属性:例如undefined和Infinity。 - 全局函数:例如parseInt()。 - 构造函数:例如Date()(注:原文Data可能为笔误,通常指Date)。 - 全局对象:例如Math和JSON。

包装对象机制与示例

接下来通过一个具体示例来探讨包装对象的概念:


var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1, s.length);

字符串本身属于原始值,并非对象,但它却拥有属性。当代码引用字符串s的属性时,JavaScript引擎会自动将字符串值通过调用new String(s)的方式转换为一个对象实例。 与字符串类似,数字和布尔值也拥有相应的包装方法。其他常见的包装类还包括:


Number object
String object
Boolean Object
Function Object
RegExp Object
Error
SyntaxError
ReferenceError
TypeError
…

原始值与引用类型的比较

需要区分不可变的原始值与可变的原始对象引用。


原始值是不可变的,对原始值的比较基于其实际值。然而,对象的比较并非基于值:即使两个对象包含完全相同的属性及相同的值,它们也不相等。因此,我们通常将对象称为引用类型,对象的值实际上是内存引用。对象的比较也是引用的比较,只有当两个变量引用同一个基对象时,它们才被视为相等。


实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章