基础。
1.new运算符
new:通过构造函数创建一个实例。
1.new操作符的执行过程
-
1.创建一个空的JavaScript对象({})。
-
2.链接该对象的constructor到另一个对象。
-
3.将步骤1创建的对象作为this上下文。
-
4.如果该函数没有返回对象,则返回this。
2.手写new
function myNew(fn, ...rest) {
const obj = Object.create(fn.prototype);
const res = fn.apply(obj, rest);
return res instanceof Object ? res : obj
}
复制代码
2.instanceof运算符
1.instanceof运算符
instanceof用于检测一个构造函数的原型是否在一个实例的原型链上。
2.手写instanceof
// 手写instanceof,抓住实例的原型等于构造函数的原型这点即可
function myInstanceof(left, Right) {
left = left._proto_;
Right = Right.prototype;
while (true) {
if (left === null) {
return false;
}
if (left === Right) {
return true;
}
left = left._proto_;
}
}
复制代码
手写instanceof的关键就是抓住实例的原型等于对应构造函数的原型这一点即可。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END