返回

掌握 JavaScript new 命令,探索对象创建的奥秘

前端

在JavaScript中,对象是一个独立的实体,包含了一组相关的数据和操作。我们使用new命令来创建对象,它允许我们调用构造函数并传递参数,从而创建一个新的对象。构造函数是一种特殊的函数,用于创建和初始化对象。它通常以大写字母开头,并且在函数名后紧跟一对小括号。

例如,以下代码创建了一个名为Person的构造函数:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

我们可以使用new命令来调用Person构造函数,并传递参数来创建新的对象:

const person1 = new Person("John", 30);
const person2 = new Person("Mary", 25);

这将创建两个Person对象,person1和person2,它们具有不同的属性值。我们可以使用点语法来访问对象的属性:

console.log(person1.name); // 输出 "John"
console.log(person2.age); // 输出 25

构造函数不仅可以初始化对象的属性,还可以定义对象的方法。方法是对象的函数,用于对对象进行操作。例如,我们可以为Person构造函数添加一个getName方法:

function Person(name, age) {
  this.name = name;
  this.age = age;

  this.getName = function() {
    return this.name;
  };
}

现在我们可以使用点语法来调用getName方法:

console.log(person1.getName()); // 输出 "John"

原型是JavaScript中另一个重要的概念。每个对象都有一个原型对象,它是一个特殊的对象,包含了该对象的所有属性和方法。当我们访问对象的属性或方法时,JavaScript会首先在该对象中查找,如果没有找到,它就会沿着原型链向上查找,直到找到该属性或方法为止。

原型链是一个对象到其原型的链接列表。当我们创建Person对象时,它会自动创建一个Person.prototype对象作为其原型。我们可以使用Object.getPrototypeOf()方法来获取对象的原型:

console.log(Object.getPrototypeOf(person1)); // 输出 Person.prototype

我们可以使用原型来共享属性和方法。例如,我们可以为Person.prototype添加一个introduce方法:

Person.prototype.introduce = function() {
  console.log(`My name is ${this.name} and I am ${this.age} years old.`);
};

现在我们可以使用点语法来调用introduce方法:

person1.introduce(); // 输出 "My name is John and I am 30 years old."
person2.introduce(); // 输出 "My name is Mary and I am 25 years old."

继承是JavaScript中另一个重要的概念。继承允许我们创建新的类,这些类可以继承父类的属性和方法。例如,我们可以创建一个Student类,它继承自Person类:

class Student extends Person {
  constructor(name, age, major) {
    super(name, age);
    this.major = major;
  }
}

现在我们可以使用new命令来创建新的Student对象:

const student1 = new Student("Alice", 20, "Computer Science");

student1对象将继承Person类的属性和方法,并且还具有自己的major属性。我们可以使用点语法来访问student1对象的属性:

console.log(student1.name); // 输出 "Alice"
console.log(student1.age); // 输出 20
console.log(student1.major); // 输出 "Computer Science"

new命令是JavaScript中创建对象的基本操作。它允许我们调用构造函数并传递参数,从而创建一个新的对象。构造函数可以初始化对象的属性和方法,原型可以共享属性和方法,继承允许我们创建新的类,这些类可以继承父类的属性和方法。掌握这些概念对于理解JavaScript中的对象创建技术至关重要。