(注意:以下为标准markdown格式文本)
浅谈JS构造函数的方法与原型prototype
JS中的构造函数是用来创建对象的模板,通过创建它的实例可以方便地生成多个相似的对象。在JS中,构造函数和prototype之间有着密不可分的关系,本文将为大家详细讲解JS构造函数与prototype的使用方法。
构造函数的定义
在JS中,构造函数本质上是一种特殊的函数,用于创建对象。JS的构造函数使用关键字function
来定义,如下所示:
function Person(name, age) {
this.name = name;
this.age = age;
}
这里我们定义了一个名为Person
的构造函数,它接受两个参数,分别为name
和age
,并将它们保存为对象的属性。
构造函数的使用
我们可以通过new
关键字调用构造函数来创建实例对象,如下所示:
var person1 = new Person('Tom', 18);
var person2 = new Person('Jerry', 20);
console.log(person1.name, person1.age); // 输出:Tom 18
console.log(person2.name, person2.age); // 输出:Jerry 20
通过new
关键字创建实例对象时,JS会自动完成以下操作:
- 在内存中创建一个新对象
- 将新对象的原型指向构造函数的
prototype
属性 - 将构造函数中的
this
关键字指向新对象 - 执行构造函数中的代码
- 如果构造函数中没有返回任何值或返回的不是对象,则返回新对象,否则返回返回值
prototype的定义
在JS中,每个函数都可以拥有一个prototype
属性,该属性是一个指针,指向一个对象,这个对象被称为原型对象。我们可以向原型对象中添加属性和方法,从而使它们成为该函数所创建实例对象的共享属性和方法。
比如我们可以向上面的Person
构造函数中的prototype
属性中添加一个sayHello
方法,如下所示:
Person.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name);
}
这样一来,通过Person
构造函数创建出来的所有实例对象都可以调用该方法,如下所示:
var person1 = new Person('Tom', 18);
var person2 = new Person('Jerry', 20);
person1.sayHello(); // 输出:Hello, my name is Tom
person2.sayHello(); // 输出:Hello, my name is Jerry
prototype的继承
在JS中,通常使用原型继承来实现对象间的继承关系。比如我们可以定义一个Student
构造函数,它继承自Person
构造函数,如下所示:
function Student(name, age, grade) {
// 调用Person构造函数,继承name和age属性
Person.call(this, name, age);
this.grade = grade;
}
// 设置Student的原型对象为Person的实例对象,从而实现继承
Student.prototype = Object.create(Person.prototype);
// 设置Student构造函数指向自身
Student.prototype.constructor = Student;
// 在Student原型对象上添加一个study方法
Student.prototype.study = function() {
console.log(this.name + ' is studying.');
}
这样一来,通过Student
构造函数创建出来的实例对象就可以继承Person
构造函数中定义的属性和方法,并且还能够拥有自己的属性和方法。如下所示:
var student1 = new Student('Lucy', 18, 3);
console.log(student1.name, student1.age, student1.grade); // 输出:Lucy 18 3
student1.sayHello(); // 输出:Hello, my name is Lucy
student1.study(); // 输出:Lucy is studying.
总结
在JS中,构造函数和prototype是创建对象的重要手段,它们各自的作用及使用方法需要掌握。构造函数用于创建对象的模板,通过设置对象属性来实现对象的个性化;prototype则用于添加对象的共享属性和方法,以及实现对象间的继承关系。通过不断地实践和学习,相信大家都能熟练掌握JS构造函数和prototype的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈js构造函数的方法与原型prototype - Python技术站