美文网首页
前端笔记二(new与Object.create区别)

前端笔记二(new与Object.create区别)

作者: 沐雨芝录 | 来源:发表于2019-03-12 16:42 被阅读0次

1.创建对象的方式,Object.create 和new来说明

  var Base = function () {}
  var o1 = new Base();
  var o2 = Object.create(Base);
  • Object.create的实现方式:
Object.create =  function (o) {
    var F = function () {};
    F.prototype = o;
    return new F();
};

简单来说就是内部创建一个空函数,将函数的prototype指向传参的对象,然后返回new的实例。

  • new Base()的时候new做了什么?
  var o1 = new Object();
  o1.__proto__ = Base.prototype;
  Base.call(o1);

简单来说:新建一个obj对象o1,并且让o1的__proto__指向了Base.prototype对象。并且使用call进行强转作用环境。

总结:

相关文章

网友评论

      本文标题:前端笔记二(new与Object.create区别)

      本文链接:https://www.haomeiwen.com/subject/qkunpqtx.html