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到底发生了什么,
- 一个继承自constructor.prototype(构造函数的原型对象)的对象被创建。
- this绑定到构造函数上,并使用指定参数执行构造函数。
- 如果构造函数内有返回对象的话,那么就会覆盖第一部创建的对象,如果没有则隐式返回第一步创建的对象。
关于检测对象类型,还是用instanceof更加可靠一些,(用来检测构造函数的原型是不是在实例的原型链上)
缺点:不同实例的同名方法是不相关的,浪费内存。
//持续更新中。