我正在开始一系列有关 JavaScript 概念的帖子,而这仅仅是开始。在第一篇文章中,我们将探讨对象的基本概念,这对于理解数据结构在 JavaScript 中的工作原理至关重要。
请继续关注下一篇文章,它将继续本文和其他几个主题。
现实世界中,对象是实体(真实的或抽象的)。例如:铅笔、汽车、笔记本。这些对象中的每一个都有特定的属性。例如:一辆蓝色汽车、一支红色铅笔或一本大笔记本。
在 JavaScript 中,对象是收集属性的独立实体。属性是名称和值之间的关联,即描述对象的信息。
const carro = { cor: "amarelo", tamanho: "grande", };
在此示例中,颜色和尺寸是汽车对象的属性,并且每个属性都有一个关联值。
文字对象以简单直接的方式创建,其中值已经手动定义。当您的对象有一组固定的属性时,此语法非常理想。
const pessoa = { nome: "João", idade: 19, rua: "Rua Erva Daninha", };
当属性不经常更改或需要快速创建具有固定值的对象时,这种类型的对象非常有用。
构造函数用于动态创建对象,特别是当您需要多个相似的对象时。当使用 new 关键字时,会创建一个引用构造函数的新对象。
function NomeDoConstrutor(parâmetros) { this.propriedade1 = valor1; this.propriedade2 = valor2; this.método = function() { // Código do método }; } const variavel1 = new NomeDoConstrutor(parâmetros) const variavel2 = new NomeDoConstrutor(parâmetros)
作为一个更传统且不太学术的例子:
function Pessoa(nome, idade) { this.nome = nome; this.idade = idade; this.cumprimentar = function () { console.log("Olá, meu nome é " + this.nome); }; } const pessoa1 = new Pessoa("João", 30); const pessoa2 = new Pessoa("Maria", 25); pessoa1.cumprimentar(); // Olá, meu nome é João pessoa2.cumprimentar(); // Olá, meu nome é Maria
在这种情况下,输出将被“标记”为 Person 函数规定的模型中的 person1 和 person2 变量分配的值。
在构造函数中,我们使用 this 关键字来引用正在创建的对象。这允许您定义对象的动态属性和方法。
例如上面的代码中,this.name和this.age定义了对象的属性,而greet方法是与该对象关联的函数。
JavaScript 中的继承是通过原型实现的。您不是直接从另一个对象创建一个对象,而是创建一个层次结构,其中一个对象可以从另一个对象继承属性和方法。这是使用 call 或 apply 方法完成的。
const carro = { cor: "amarelo", tamanho: "grande", };
当我们使用 Pessoa.call(this, nome) 时,我们正在调用 Pessoa 构造函数并传递 Student 对象的上下文。这使得student1对象继承了Person的name属性,并且还拥有了age属性,这是Student函数独有的。
当需要创建多个具有许多属性和具有变量值的方法的对象时,最常使用构造函数。在这种情况下,最好使用构造函数对象作为“标记”,而不是手动编写多个对象。
使用构造函数创建的对象是由new运算符生成的实例。每个实例都有自己的属性,但共享构造函数原型中定义的方法。
这意味着,如果您从构造函数创建多个对象,它们将具有相同的方法,但属性值不同。
const pessoa = { nome: "João", idade: 19, rua: "Rua Erva Daninha", };
在这种情况下,new 运算符创建一个新对象,将上下文 (this) 绑定到构造函数
对于共享方法,添加构造函数的原型会更加高效。这可以避免内存重复。
function NomeDoConstrutor(parâmetros) { this.propriedade1 = valor1; this.propriedade2 = valor2; this.método = function() { // Código do método }; } const variavel1 = new NomeDoConstrutor(parâmetros) const variavel2 = new NomeDoConstrutor(parâmetros)
通过在构造函数的原型中定义方法,我们可以避免代码重复。它们不是每个对象都有该方法的副本,而是共享相同的方法,从而节省内存。
new 运算符创建一个新对象,并将上下文 (this) 绑定到构造函数。
对于共享方法,将它们添加到构造函数的原型中会更高效,避免内存中的重复。
以上是JavaScript 中的对象的详细内容。更多信息请关注PHP中文网其他相关文章!