前言
要明白new的过程,首先我们要知道什么情况下用new 或者说我们做什么的时候需要new
答案是当构造函数创建好时 我们去创建该构造函数下的实例是 我们需要去new
定义一个构造函数
function Person(name, age) {
this.name = name;
this.age = age;
}
使用new关键字创建实例
var person = new Person("Michelle", 24);
将新对象的原型链接到构造函数的原型对象上
var obj = new Object();//申请空间创建新对象
var result = Person.call(obj);
obj.__proto__ = Person.prototype;
返回与判断
如果构造函数没有显式返回一个对象,则默认返回新对象。如果构造函数返回一个非基本类型的对象(例如数组、函数或其他对象),则返回该对象;否则,返回新对象。
if (typeof(result) == "object")
person = result;
else
person = obj;
结语:
需要注意的是,通过 new
运算符创建的对象实例与构造函数之间存在一个连接。实例可以访问构造函数原型上定义的属性和方法,而构造函数也可以通过原型链访问到实例共享的属性和方法。