前端javascript: new 操作符新建一个对象

113 阅读1分钟

new 操作符新建一个对象;

  • 创建一个空对象:var obj={};

  • 通过call 获取函数传参:var arg=Array.prototype.slice.call(arguments,1);

  • 将空对象的原型链属性指向构造函数的的原型:obj.proto=Fn.prototype;实现原型继承,使得新对象可以访问到构造函数原型中的属性;

  • 将空对象的原型链属性设置构造函数,为了实例化Fn;obj.proto.constructor=Fn;

  • 将空对象指向构造函数:Fn.apply(obj,arg);

  • 返回一个新对象;

      var new=function(Fn){
          var obj={};
          var arg=Array.prototype.slice.call(arguments,1);
          obj.__proto__=Fn.prototype;
          obj.__proto__.constructor=Fn;
          Fn.apply(obj,arg);
          return obj;
      }