hi,我是fortune,今天呢,我打算开启一篇每日一道手写题目,锻炼一下自己的编程能力~还有就是为自己接下来掌握vue的源码做好准备。
2.手写 instanceof 方法(2022.5.08)
思路:
- 首先获取类型的原型
- 然后获得对象的原型
- 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为
null,因为原型链最终为null
function myInstanceof(left, right)
{ let proto = Object.getPrototypeOf(left), // 获取对象的原型
prototype = right.prototype; // 获取构造函数的 prototype 对象
// 判断构造函数的 prototype 对象是否在对象的原型链上
while (true)
{ if (!proto) return false;
if (proto === prototype) return true;
proto = Object.getPrototypeOf(proto); }
}
1. 手写 Object.create(2022.5.08)
思路:将传入的对象作为原型
function create(obj) {
function F() {}
F.prototype = obj
return new F()
}