function createStudent(name, age) {
// 2 通过 this 赋值
this.name = name;
this.age = age;
}
// 3 通过 new 来创建对象
const obj = new createStudent("海海", 18);
console.log(obj);
构造函数的工作原理:
- 开辟空间
- 将新的创建的对象对象构造函数中的this
- 为对象赋值
- 将创建好的对象的地址返回
构造函数的弊端
同一个 say 方法占据了两份内存
this.name = name;
this.age = age;
this.say = function () {
console.log(this.name);
}
}
const obj = new createStudent("海海", 19);
const obj1 = new createStudent("海海1", 19);
console.log(obj.say === obj1.say); // false 不是同一say方法 浪费了内存
提取同一个 say 方法
- 解决了浪费内存的弊端
- 但是造成了
污染全局变量的问题
function say() {
console.log(this.name);
}
function createStudent(name, age) {
this.name = name;
this.age = age;
this.say = say
}
const obj = new createStudent("海海", 18);
const obj1 = new createStudent("海海1", 19);
console.log(obj.say === obj1.say); // true