1. 构造函数和普通函数的区别
构造函数在使用时,需要用 new 关键词创建一个基于构造函数的实例化对象
普通函数在使用时,通过 函数名() 的方式调用,用于分割代码,改变代码块的调用顺序
构造函数内部的 this 指向实例化后的对象,使用 this 创建实例属性
普通函数内部的 this 指向全局对象
一般构造函数创建时需要首字母大写,以此区分普通函数
2. 构造函数实例化成对象的过程
- 首先创建了一个新的空的实例对象
{}
- 将新对象的原型
__proto__
指向构造函数的prototype
原型对象 - 改变
this
指向,让空对象继承构造函数的属性 - 返回这个实例对象
// 创建构造函数
function A() {
this.name = 'A'
}
// new 关键词实现实例化
console.log(new A()); // 结果: {name: 'A'}
// 模仿实例化过程
function newA() {
const obj = {}
obj.__proto__ = A.prototype
A.apply(obj)
return obj
}
console.log(newA()); // 结果: {name: 'A'}
网友评论