js中的new()
2018-04-06 本文已影响0人
叫我童大侠
new
运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。
语法
new constructor[([arguments])]
参数
constructor
[一个指定对象实例的类型的类或函数。]
arguments
[一个用来被constructor 调用的参数列表。]
创建一个新的对象实例,要使用 new
操作符,当代码 new
Fn
(...)
执行时,会发生以下事情:
- 创建一个新对象继承自
Fn.prototype
。 - 将构造函数
Fn
作用域赋给新对象,并将this
绑定到新创建的对象。 - 执行构造函数
Fn
- 由构造函数
Fn
返回的对象就是new
表达式的结果。
Javascript引擎中看到的对象模型是:
var obj = new Base()//创建一个空对象obj
var obj = {};
//这个空对象的__proto__成员指向了Base函数对象prototype成员对象
obj.__proto__ = Base.prototype;
Base.call(obj);
//将Base函数对象的this指针替换成obj,然后再调用Base函数,
//于是我们就给obj对象赋值了一个id成员变量,这个成员变量的值是”base”,关于call函数的用法。