new一个对象的过程

先看个例子

function User(name){
    this.name = name
    this.show = function(){
        console.log(this.name)
    }
    return this//不写默认也是返回this
}
let u1 = new User('牛顿')

创建一个实例,必须使用new操作符。用这种操作符调用构造函数实际上会经历以下4个阶段

  • 创建一个新对象
  • 将构造函数的作用域赋值给新对象(因此this就指向了新对象)
    换句话说:让空对象的proto(IE没有该属性)成员指向了构造函数的prototype成员对象
    代码解释:
let arr = [];//实际上是let arr = new Array
console.log(arr.__proto__ == Array.prototype)//true
  • 执行构造函数中的代码(为这个新对象添加属性)
  • 如果构造函数中没有返回其它对象,那么返回 this,即返回新对象,否则,返回构造函数中返回的对象
    详情请看根据<JavaScript高级程序设计>这本书P145页
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容