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更加可靠一些,(用来检测构造函数的原型是不是在实例的原型链上)

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

//持续更新中。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值