美文网首页
js的new操作符做了哪些事情

js的new操作符做了哪些事情

作者: Adonia汪 | 来源:发表于2021-03-23 17:32 被阅读0次

    先来一段代码

    var Person = function () {};
    var person1 = new Person();
    

    new 过程一共包括4个步骤:

    1、创建一个新对象

    var person1 = new Object();
    

    2、设置原型链,将空对象的原型proto指向构造函数的原型

    person1.__proto__ = Person.prototype
    

    3、将构造函数的作用域赋给新对象(将this指向这个新对象),执行构造函数代码(为给这个新对象添加属性)

    让Person中的this指向person1,并执行Person的函数体。

    var result = Person.call(person1)
    

    4、返回新对象(return),判断Person的返回值类型。如果是值类型,返回person1,忽略返回值;如果是引用类型,就返回这个引用类型的对象。

    return result instanceof Object ? result : person1;
    

    默认情况下函数返回值为undefined,即没有显示定义返回值的话,但构造函数例外,new 构造函数在没有return的情况下默认返回新创建的对象。

    但是,在有显示返回值的情况下,如果返回值为基本数据类型(string、number、null、undefined、Boolean),返回值仍然是新创建的对象。
    只有在显示返回一个非基本数据类型(object)时,函数的返回值才为指定对象。这种情况下,this所引用的值也被丢弃了。

    相关文章

      网友评论

          本文标题:js的new操作符做了哪些事情

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