手写函数

2020-02-05  本文已影响0人  小旎子_8327

手写new 函数

步骤:
创建一个新对象
新对象的_proto_指向构造函数的prototype
将构造函数的this指向新对象
执行构造函数
返回新对象

function new(func){
  return function(){
      var obj = new Object();
      obj._proto_ = func.prototype;
      func.apply(obj, arguments);
      return obj;
      }
 }
 new(Person)('name', '12');

实现instanceOf

instanceOf判断一个对象是不是某个类型的实例
思路: a instanceof B
检测a的原型链( _proto_)上是否有B.prototype,若有返回true,否则false。

function instanceOf(obj, func){
       var protoObj = obj._proto_;
       while(protoObj){
            if(protoObj === func.prototype){
                 return true;  
           }
           protoObj = protoObj._proto_;
        }
       return false;
}
上一篇 下一篇

猜你喜欢

热点阅读