用 new 关键字来调用的函数,称为构造函数。构造函数首字母一般大写
function Foo(name){this.name = name}
构造函数的执行过程
- 当以 new 关键字调用时,会创建一个新的内存空间,为实例对象。
- 函数体内部的 this 指向该实例对象。
- 给 this 添加属性,就相当于给实例添加属性。
- 默认返回 this
手写new
//new 做了两件事//1.将新创建的对象的原型指向构造函数的原型 user.__proto__ = User.prototype//2.改变this的指向,指向新生成的对象function User(name){this.name =name}function myNew(fun,...args){let b = {}b.__proto__ = Object.create(fun.prototype)fun.call(b,...args)return b}let a = myNew(User,"jack")console.dir(a)
