前言
我们都知道,通过 new 一个构造函数,我们就得到一个类的实例,通过这个实例,可以调用构造函数的属性,方法等等。那么,这里面发生了什么呢?要理解这篇文章,需要先了解原型链的原理(原型链)。
new一个构造函数的过程
(1)建立一个空对象。
(2)将空对象的原型指向构造函数的原型对象。
(3)将空对象的上下文与构造函数绑定。
自定义一个new方法
function myNew(constructor, ...arguments) {
var obj = {};
obj._proto__ = constructor.prototype;
const res = constructor.apply(obj, arguments);
// 如果返回的不是对象,只能返回空对象了
return (typeof res === 'object') ? res : obj;
}
function Chinese(name) {
this.name = name;
}
var jack = myNew(Chinese, 'jack');
console.log(jack.name); // output : jack
揭秘new构造函数的秘密:实例化过程与自定义new方法
本文详细解析了new一个构造函数背后的机制,包括创建空对象、设置原型链和上下文绑定。并通过自定义myNew方法演示实例化过程。重点介绍了原型链在类实例化中的作用。
760

被折叠的 条评论
为什么被折叠?



