一、new 关键字的作用
new关键字可以创建一个对象,而构造函数的this会指向new创建的这个对象
二、new关键字的操作过程(面试常见)
- 创建一个新的对象
- 将创建的空对象的原型指向构造函数的prototype属性上
- 改变this指向;--> 创建的空对象会成为构造函数的上下文
- 判断构造函数的返回值,如果return的是基本类型,则返回创建的对象,如果是引用类型,则返回这个引用类型
三、new 一个构造器的步骤---代码示例
function Foo(){
console.log(this)
// 三种情况都要分别删除注释,对比一下打印结果
// return {name:rebecca}
// return [1,2,3]
//return 1111
}
console.log(new Foo())
四、new 一个新对象--代码示例
new Base()
// 第一行,我们创建了一个空对象obj;
new obj = {};
// 第二行,我们将这个空对象的 __proto__ 成员指向了 Base 函数对象 prototype 成员对象;
obj.__proto__ == Base.prototype;
// 第三行,我们将 Base 函数对象的 this 指针替换成obj,然后再调用 Base 函数,
// 于是我们就给 obj 对象赋值了一个 id 成员变量, 这个成员变量的值是 ”base” ,
// 关于 call 函数的用法。
Base.call(obj)