每日一道手写~

84 阅读1分钟

1652014568.jpg

hi,我是fortune,今天呢,我打算开启一篇每日一道手写题目,锻炼一下自己的编程能力~还有就是为自己接下来掌握vue的源码做好准备。

2.手写 instanceof 方法(2022.5.08)

思路:

  1. 首先获取类型的原型
  2. 然后获得对象的原型
  3. 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为 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() 
}