目录
一:构造函数缺陷
通过使用JS来实现面向对象编程,可以通过构造函数实现封装。但一个很严重问题便是JS构造函数存在浪费内存的问题
例如:
function Fn(name, age, song) {
this.name = name
this.age = age
this.song = function () {
console.log('如果这都不算爱');
}
}
const zxy = new Fn('张学友', 50)
const gfc = new Fn('郭富城', 49)
console.log(zxy, gfc);
以上代码中,通过构造函数的方式创建了zxy、以及gfc两个实例对象,但是执行构造函数中函数体中代码时,会声明两个功能完全相同的song()方法代码。这样便会造成内存的浪费,因为可以通过原型的方式实现所有对象使用同一个函数,可以达到节省内存目的。
二:原型
能够利用原型对象实现实例对象中方法共享
1 原型是是什么
原型是一个构造函数上的属性(prototype),同时该属性又是一个对象,我们称为原型对象
function Star(name) {
this.name = name
}
const zxy = new Star('张学友')
console.log(Star.prototype);//Object
2 原型对象的作用
共享方法。因为原型对象可以挂在函数,可以把那些实例化对象身上通用的方法,直接定义在prototype