构造函数就是普通函数,只是在命名的时候,习惯进行首字母大写
通过 new 的方式来调用函数,那么这个函数就是一个构造函数
构造函数会返回一个对象,这个对象被称为实例对象
当你new构造函数以后 它内部都发生了什么事情
1.内部创建了一个对象
2.将该函数中this指向该对象
3.执行函数中的代码
4.直接将这个对象返回了
构造函数中的this是就该构造函数创建出来的实例对象
<script>
// 构造函数习惯首字母大写
function Obj(name, age, gender) {
// 构造函数中的this,指向的是它new出来的实例对象
this.name = name;
this.age = age;
this.gender = gender;
this.sayHi = function () {
console.log(`我的名字叫${name}`);
}
}
var obj1 = new Obj('张三', 13, '男')
var obj2 = new Obj('李四', 14, '女')
console.log(obj1, obj2);
obj1.sayHi(); // 我的名字叫张三
obj2.sayHi(); // 我的名字叫李四
console.log(obj1.sayHi === obj2.sayHi); // false
// 构造函数里面的方法,实例对象在调用的时候,和工厂函数一样,创建了一个新的内存空间来存放数据
// 解决方法:原型
</script>