📜  构造函数 - Javascript (1)

📅  最后修改于: 2023-12-03 15:10:42.485000             🧑  作者: Mango

构造函数 - Javascript

在Javascript中,一个构造函数是用来创建对象的函数。我们可以使用构造函数来创建一个新的对象,并且这个对象可以有自己的属性和方法。

创建一个构造函数

一个构造函数就是一个普通的函数,我们可以使用function关键字来定义它,并且函数名的第一个字母通常大写,以区分它是一个构造函数而不是一个普通的函数。

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

上面的代码定义了一个名为Person的构造函数,并且它有两个参数nameage。在函数体内,我们可以使用this关键字来给对象添加属性和方法。

创建一个对象

要创建一个新的对象,我们可以使用new关键字来调用构造函数,并且传入必要的参数。这个过程叫做实例化对象。

const person1 = new Person('Tom', 18);

上面的代码创建了一个名为person1的对象,并且使用Person构造函数来初始化它。person1对象具有了nameage两个属性,它们的值分别是'Tom'18

原型

除了使用构造函数来添加对象的属性和方法,我们还可以使用原型来给对象添加属性和方法。通过使用原型,我们可以在内存中只保存一份属性和方法,而不是每个对象都保存一份,以减少内存的使用。

Person.prototype.sayHi = function() {
  console.log(`Hi, my name is ${this.name}, I'm ${this.age} years old.`);
}

上面的代码使用Person.prototype来添加一个名为sayHi的方法。这个方法能够访问到Person构造函数中的nameage属性。我们可以使用person1.sayHi()来调用这个方法。

继承

Javascript中的构造函数也支持继承。我们可以使用callapply方法来调用父类的构造函数,从而实现继承的效果。

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

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

上面的代码定义了一个名为Student的构造函数。它从Person构造函数继承了nameage属性,并且还有自己的major属性。通过使用Object.create方法,我们将Student的原型指向了Person的原型,以实现继承的效果。同时,我们还需要将constructor属性重新指向Student构造函数。

结语

以上就是Javascript中的构造函数,它是创建对象和继承的基础。除了上面的内容,还有很多关于构造函数的知识,例如class关键字、闭包和作用域等等。希望本文能为你提供一个基本的认识和入门。