美文网首页
讲解Javascript中new的工作原理(二)

讲解Javascript中new的工作原理(二)

作者: 欢欢小天使K | 来源:发表于2020-03-31 15:19 被阅读0次

当代码 new Foo(...) 执行时,会发生以下事情:

  1. 一个继承自 Foo.prototype 的新对象{}被创建。

  2. 使用指定的参数调用构造函数 Foo,并将 this 绑定到新创建的对象。new Foo 等同于 new Foo(),也就是没有指定参数列表,Foo 不带任何参数调用的情况。

  3. 由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)

image.png

用代码来看看

//讲解new的工作原理
    var new2 = function(func) {//参数:指定构造函数
        var o = Object.create(func.prototype);//第一步:生成一个新的对象,新对象要指定构造函数原型对象
        var k = func.call(o);//第二步:要执行构造函数,用call转移上下文
        if(typeof k === 'object') {//第三步:判断执行的结果是不是对象类型,若是就返回新创建的对象k,若不是就返回刚创建的对象o
            return k
        } else {
            return o
        }
    }
var M = function(name){ this.name = name;}

我们验证一下:


image.png

相关文章

网友评论

      本文标题:讲解Javascript中new的工作原理(二)

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