JavaScript 中的对象
我一直对学习对象方面的内容很感兴趣,并想借此机会尝试扩展我对 JavaScript 对象的了解。
计算机科学中的对象是什么?
在详细了解 JavaScript 中的对象是什么之前,让我们先来更广泛地了解一下计算机科学中的对象概念。根据维基百科的定义,对象是指……can be a variable, a data structure, a function, or a method, and as such, is a value in memory referenced by an identifier.
维基百科进一步澄清说:In the class-based object-oriented programming paradigm, object refers to a particular instance of a class, where the object can be a combination of variables, functions, and data structures.
让我们来详细分析一下这些定义。更一般的对象定义首先列举了对象可以是什么的几个不同例子,但我们想重点关注的是最后一部分。简单来说,对象is a value in memory referenced by an identifier……
第二个定义,指的是基于类的面向对象编程对象,同样侧重于定义的后半部分。关键短语是a particular instance of a class, where the object can be a combination of variables, functions, and data structures……
如果我们看一下这两个定义,就会发现它们的共同点是,对象可以是许多不同的事物,并且是由标识符引用的值。
JavaScript 中的对象是什么?
在研究 JavaScript 对象时,Geeks for Geeks 对 JavaScript 对象的定义尤其让我印象深刻。Objects, in JavaScript, is it’s most important data-type and forms the building blocks for modern JavaScript.
让我们再来看看 JavaScript 对象的另一个主要属性,以下内容同样来自 Geeks for Geeks 的 JavaScript 对象部分。An object, is a reference data type. Variables that are assigned a reference value are given a reference or a pointer to that value. That reference or pointer points to the location in memory where the object is stored. The variables don’t actually store the value.
这里的关键短语是reference data type……。这一点很重要,因为它与我们之前对对象的定义相关。如果我们还记得我们第一个对象定义,我们看到一个对象is a value in memory referenced by an identifier……
JavaScript 对象是什么样的?
在 JavaScript 中,创建对象有多种不同的方法。首先,我们将介绍一种最常见的方法:使用花括号。
let foo = {}
我们在这里所做的只是创建了一个由变量 foo 引用的对象。我们的 foo 对象目前是空的,没有任何键值对。
键值对可以用来给对象添加属性。和我们之前看到的第二个定义类似,键值对可以是变量、函数和数据结构的组合。让我们来看一些例子。
// Variable
let helloVariable = "Hello World";
// Object
let foo = {
variable: helloVariable,
func: () => console.log("Hello World"),
structure: [0,1]
};
现在,我们的 foo 对象包含一个变量、一个函数和一个数据结构。我们可以像访问数组索引一样访问这三个不同的属性。由于这些属性也可以通过调用对象的方法名(点号表示法)来访问,我将展示这两种访问方法。
let helloVariable = "Hello World";
let foo = {
variable: helloVariable,
func: () => console.log("Hello World"),
structure: [0,1]
};
// Variable
console.log(foo["variable"]);
// => "Hello World"
console.log(foo.variable);
// => "Hello World"
// Function
foo["func"]();
// => "Hello World"
foo.func();
// => "Hello World"
// Structure
console.log(foo["structure"])
// => [0, 1]
console.log(foo.structure)
// => [0, 1]
如我们所见,可以使用方括号或点号表示法来访问属性。我暂且不深入探讨这两种表示法的区别和优点,你只需知道这是访问对象属性的两种不同方式即可。
我希望我们现在对 JavaScript 对象有了更深入的了解。回顾一下我们的定义,我们需要记住,对象可以代表很多不同的东西,它是一个由标识符引用的值。这使得我们的 JavaScript 对象能够成为引用数据类型,这也是 JavaScript 对象另一个重要的特性。我们还学习了一些创建对象、对象中可以存储哪些信息以及如何访问这些信息的示例。希望这篇文章对您阅读起来和我撰写时一样有启发。
参考
- https://en.wikipedia.org/wiki/Object_(computer_science)
- https://www.geeksforgeeks.org/objects-in-javascript/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object