且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《JavaScript启示录》——1.12 复杂值(或组合值)

更新时间:2022-09-15 20:33:18

本节书摘来自异步社区《JavaScript启示录》一书中的第1章,第1.12节,作者:【美】Cody Lindley著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.12 复杂值(或组合值)

原生对象构造函数Object()、Array()、Function()、Date()、Error()和RegExp()是复杂类型,因为它们可以包含一个或多个原始值或复杂值。本质上,复杂值可以由很多不同类型的JavaScript对象组成。可以这样说,复杂对象其在内存中的大小是未知的,因为复杂对象可以包含任何值,而不是一个特定的已知值。在如下代码中,我们创建了一个包含所有原始值的对象和一个包含所有原始值的数组。

<!DOCTYPE html><html lang="en"><body><script>
var object = {
    myString: 'string',
    myNumber: 10,
    myBoolean: false,
    myNull: null,
    myUndefined: undefined
};

var array = ['string', 10, false, null, undefined];

// 相比简单的原始值,原始值不能表示复杂值,而复杂值可以封装任意JavaScript值
var myString = 'string';
var myNumber = 10;
var myBoolean = false;
var myNull = null;
var myUndefined = undefined;

</script></body></html>

这里的重点是,复杂值是各种值的组合,并且在复杂性和组合方面与原始值不同。

注意

“复杂对象”这一术语在其他作品中也被表达为“复合对象”或“引用类型”。如果还不太清楚,可以思考这些名称,它们都描述了JavaScript值的特性,不包括原始值在内。原始值不是“值引用”,不能表示其他值的组合(即一个由几部分或几个元素组成的东西)。另一方面,复杂对象是“值引用”,可以包含或封装其他值。