通过自定义构造函数创建对象本质上就是对工厂方式创建对象的简写
工厂方式创建对象不了解的可以去看我另一篇文章 通过工厂方式创建对象
// 工厂方式: 本质上就是将内置构造函数创建对象封装了一个函数
function student() {
let stu = new Object();
stu.uname = '张三';
stu.age = 12;
return stu;
}
工厂方式简写就变成了自定义构造函数
function student1(uname,age) {
this.uname = uname;
this.age = age;
}
通过自定义构造函数创建对象
// 语法: let 对象名 = new 自定义构造函数();
let zs = new student1('张三',12);
console.log(zs);
自定义构造函数中的this
let abc;
function Student1(uname, age) {
// 局部作用域
this.uname = uname;
this.age = age;
this.eat = function() {
console.log('吃饭了么');
}
// 将局部作用域中的this 赋值给了abc变量
abc = this;
}
let zs = new Student1('张三', 12);
// 代码验证: this 现在指向了实例对象 zs (this 和 zs 是相等的)
console.log(zs === abc); // true
结论:
构造函数中的this指向通过构造函数创建的对象(实例对象)
构造函数中的this指向实例对象