当前位置: 移动技术网 > IT编程>开发语言>JavaScript > new 运算符的原理

new 运算符的原理

2019年08月22日  | 移动技术网IT编程  | 我要评论

关于 new 运算符的原理:

 

1、红宝书上解释:

(1)创建一个新对象

(2)将构造函数的作用域赋给新对象

(3)执行构造函数中的代码

(4)返回新对象

 

2、mdn上的解释:

(1)一个继承自 foo.prototype 的新对象被创建

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

(3)如果构造函数返回了一个“对象”,那么这个对象会取代整个 new 出来的结果。如果构造函数没有返回对象,那么 new 出来的结果为步骤(1)创建的对象

 

3、总结:

使用 new 运算符时,其实就做了这三件事:

// 创建了一个空对象 obj,并将这个空对象的__proto__成员指向 foo 函数对象 prototype 成员对象
var obj  = {};
obj.__proto__ = foo.prototype;

// 将 foo 函数对象的 this 指针替换成 obj,然后再调用foo函数
foo.call(obj);

// 判断实例类型是否为对象,是则返回实例,否则返回构造函数 if (typeof obj === 'object') { return obj; } else { return foo; }

也就是说,函数内部发生了以下变化:

(1)创建一个新对象,并继承构造函数 foo 的原型对象 foo.prototype

(2)构造函数 foo 被执行,执行时传入相应的参数,并将 this 指定为新的实例

(3)判断实例是否为对象,是则返回实例,否则返回构造函数

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网