JS创建对象的简单方法,new过程发生了什么

JS创建对象方法有很多,在这里简单介绍几种

1.用自带构造方法构造

var ob = new Object();

缺点:创建多个对象会产生很多重复代码

2.工厂模式,自己编写一个具有生产对象的函数

function Car(weight,height){
    var o = new Object();
    o.weight = weight;
    o.height = height;
    return o;
}
var cat = Car(100,50);

缺点:无法识别对象类型,不知道一个对象的类型,换句话说无法用代码表示出来对象是谁创建的。

3.构造函数,系统实现上述方法的部分流程

function Car(weight,height,price){
    this.weight = weight;
    this.height = height;
    this.price = price;
}
var car1 = new Car(100,100,100000);

这种方法,系统会自己完成上面第二种方法中的 var o = new Object (); return o; 两步,而且也解决了实例的类型问题,在本个例子中 car1.constructor == Car。

//1.11二更

下面着重说一下new到底发生了什么

  1. 一个继承自constructor.prototype(构造函数的原型对象)的对象被创建。
  2. this绑定到构造函数上,并使用指定参数执行构造函数。
  3. 如果构造函数内有返回对象的话,那么就会覆盖第一部创建的对象,如果没有则隐式返回第一步创建的对象。

关于检测对象类型,还是用instanceof更加可靠一些,(用来检测构造函数的原型是不是在实例的原型链上)

缺点:不同实例的同名方法是不相关的,浪费内存。

//持续更新中。

猜你喜欢

转载自blog.csdn.net/qq_41995398/article/details/103783864