new 操作符具体做了什么
new操作符一般肯定会说创建一个对象,但是实际上其实可以细分为四个步骤。
- 创建一个空对象
- 链接原型
- 改变this指向
- 将这个对象隐式return出来
就已new一个构造函数来举例子:
你new出来的这个构造函数他本身有对应的属性,也有prototype,你var me = new 构造函数,那么me自然会拥有构造函数的所有。
那么这个如何拥有,就是new操作符所做的事情。
var me = new 构造函数();
//等同于如下
var me = function() {
var obj = {};
obj._proto_ = 构造函数.prototype;
var result = 构造函数.call(obj);
return typeof result === 'object' ? result : obj;
}
注意:
_proto_
属于隐式原型
个人猜测:
因为万物皆对象,只有构造函数才有prototype这个指针,那么隐式原型其实每个对象都有,那么每次new出新的对象时,就会对应的去链接初始原型,这里面就包含了这些对象的方法,如new Image()的onload事件啊,这些都是隐式原型中的。
return的时候,判断,你是object对象还是其他的对象,然后对应return出值
分类:
JavaScript
标签:
new操作符做了什么
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据