JS中,构造函数是用于创建对象的特殊函数,用更直白的语言解释,构造函数其实就是一个模板,可以用来创建具有相同属性和方法的多个对象。
在JS中,我们可以通过函数的方式来创建一个构造函数,代码如下:
function Person(name, age) {
this.name = name;
this.age = age;
this.getInfo = function() {
return `${this.name} is ${this.age} years old`;
}
}
以上代码是一个简单的构造函数,接受两个参数name和age,然后将它们作为对象的属性赋值。其中还有一个方法getInfo(),用来返回一个字符串形式的对象信息。
在我们使用构造函数时,首先需要实例化该函数,如下所示:
const person1 = new Person('Tom', 20);
const person2 = new Person('Jerry', 25);
使用new关键字和构造函数名来实例化一个对象,这里分别创建了两个对象,person1和person2,它们分别拥有自己的name和age属性,也能够调用getInfo()方法。
当我们通过实例化的方式使用构造函数时,构造函数将会被调用,并且该构造函数所创建的对象都会继承构造函数原型中的方法和属性。也就是说,JS中所有的构造函数都有一个原型对象,即prototype,用于存储构造函数对象的共享属性和方法。
在前面的代码中,如果我们想要给所有的Person对象都添加一个共享的sayHi()方法,我们可以通过prototype来实现,如下所示:
Person.prototype.sayHi = function() {
return 'Hi, everyone!';
}
这里通过给Person构造函数的原型对象添加一个sayHi()方法,使得所有的Person对象都能够调用该方法。
示例1:使用构造函数创建多个图形对象
以下代码为一个图形构造函数的示例。用它创建了三个对象——一个圆形、一个正方形和一个三角形,都拥有各自的属性值,并通过函数进行了计算。
function Shape(type, width, height) {
this.type = type;
this.width = width;
this.height = height;
}
Shape.prototype.getArea = function() {
return this.width * this.height;
}
const circle = new Shape('circle', 10, 10);
const square = new Shape('square', 10, 20);
const triangle = new Shape('triangle', 20, 30);
console.log(circle.getArea());
console.log(square.getArea());
console.log(triangle.getArea());
示例2:创建多个学生对象
以下代码为一个Student构造函数的示例,可以实例化一个学生对象,包含姓名、年龄和学科信息,并拥有一个计算学生平均分的方法。
function Student(name, age, subject, physics, maths, english) {
this.name = name;
this.age = age;
this.subject = subject;
this.physics = physics;
this.maths = maths;
this.english = english;
}
Student.prototype.getAverage = function() {
return (this.physics + this.maths + this.english) / 3;
}
const student1 = new Student('Tom', 20, 'Engineering', 78, 89, 90);
const student2 = new Student('Jerry', 25, 'Law', 80, 70, 85);
console.log(student1.getAverage());
console.log(student2.getAverage());
以上就是JS构造函数和实例化的关系及原型引入的完整攻略,希望对您的学习有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS构造函数和实例化的关系及原型引入 - Python技术站