📅  最后修改于: 2023-12-03 15:10:42.485000             🧑  作者: Mango
在Javascript中,一个构造函数是用来创建对象的函数。我们可以使用构造函数来创建一个新的对象,并且这个对象可以有自己的属性和方法。
一个构造函数就是一个普通的函数,我们可以使用function
关键字来定义它,并且函数名的第一个字母通常大写,以区分它是一个构造函数而不是一个普通的函数。
function Person(name, age) {
this.name = name;
this.age = age;
}
上面的代码定义了一个名为Person
的构造函数,并且它有两个参数name
和age
。在函数体内,我们可以使用this
关键字来给对象添加属性和方法。
要创建一个新的对象,我们可以使用new
关键字来调用构造函数,并且传入必要的参数。这个过程叫做实例化对象。
const person1 = new Person('Tom', 18);
上面的代码创建了一个名为person1
的对象,并且使用Person
构造函数来初始化它。person1
对象具有了name
和age
两个属性,它们的值分别是'Tom'
和18
。
除了使用构造函数来添加对象的属性和方法,我们还可以使用原型来给对象添加属性和方法。通过使用原型,我们可以在内存中只保存一份属性和方法,而不是每个对象都保存一份,以减少内存的使用。
Person.prototype.sayHi = function() {
console.log(`Hi, my name is ${this.name}, I'm ${this.age} years old.`);
}
上面的代码使用Person.prototype
来添加一个名为sayHi
的方法。这个方法能够访问到Person
构造函数中的name
和age
属性。我们可以使用person1.sayHi()
来调用这个方法。
Javascript中的构造函数也支持继承。我们可以使用call
或apply
方法来调用父类的构造函数,从而实现继承的效果。
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
构造函数继承了name
和age
属性,并且还有自己的major
属性。通过使用Object.create
方法,我们将Student
的原型指向了Person
的原型,以实现继承的效果。同时,我们还需要将constructor
属性重新指向Student
构造函数。
以上就是Javascript中的构造函数,它是创建对象和继承的基础。除了上面的内容,还有很多关于构造函数的知识,例如class
关键字、闭包和作用域等等。希望本文能为你提供一个基本的认识和入门。