用一个function实现 JavaScript中的 new 关

2017-09-11  本文已影响0人  Gary嘉骏

代码

function _new(){
  if(arguments.length === 0 ) throw new Error('no arguments');
  target = Array.prototype.shift.call(arguments);
  if(!(target instanceof Function)) throw new Error('Uncaught TypeError: '+ target + ' is not a constructor(…)');
  var self= {};
  target.apply(self, arguments);
  if (target.prototype instanceof Object) {
    self.__proto__ = target.prototype;
  };
  return self;
};
var hh = _new(hi,6,7);
var hh0 = _new(hi,3);
console.log(hh0);
console.log(hh);
console.log(hh instanceof hi) // true;

简单解析

Done

如果觉得文章对你有点用的话,麻烦拿出手机,这里有一个你我都有的小福利(每天一次): 打开支付宝首页搜索“8601304”,即可领红包。谢谢支持

上一篇 下一篇

猜你喜欢

热点阅读