js的instanceof原理

106 阅读1分钟
            function new_instanceof(left, right) {
                // 获取左边对象的隐式原型
                let left_value = left.__proto__;
                // 获取右边对象的显式原型
                let right_value = right.prototype;
                // 原型链查找
                while (true) {
                    if (left_value === null) {
                        return false;
                    }
                    if (right_value === left_value) {
                        return true;
                    }
                    left_value = left_value.__proto__;
                }
            }
            function test() {}
            let t = new test();
            console.log(new_instanceof(t, test)); // true