阅读 148

JS基础之new和instanceof

基础。

1.new运算符

new MDN

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运算符

instanceof MDN

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的关键就是抓住实例的原型等于对应构造函数的原型这一点即可。

文章分类
前端
文章标签