js 创建类与对象

本文介绍了JavaScript中创建对象的六种常见方法,包括原始方式、工厂方式、构造函数方式、原型方式、混合构造函数/原型方式及动态原型方式,并对每种方式进行了优缺点对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js 创建类与对象有几种方式:

 

 1、最原始的方式 :

var car = new Object();
car.color = "red";
car.name = "baoma";
car.showColor = function(){

   alert(this.color);
}

 

   创建一个car 的对象, 有两个属性: name,color  一个方法:showColor

   缺点:只能创建一个对象

 

2、工厂方式

 

function createCar() {
  var car= new Object;
  car.color = "blue";
  car.name= "baoma";
   car.showColor = function() {
    alert(this.color);
  };
  return  car;
}

var car1 = createCar();
var car2 = createCar();

 和原始方式一样,创建car 对象

 比原始方式优越的是:可以创建多个car对象

 缺点:所有对象的属性和方法都 是相同的

 

 

3、构造函数方式

 

 

function createCar(color,name) {
   this.color = color;
   this.name= name;
   car.showColor = function() {
    alert(this.color);
  };
 }

var car1 = createCar("blue","baoma");
var car2 = createCar("red","benci");

 

缺点:

 构造函数会重复生成函数,为每个对象创建独立的版本

 

 

4、原型方式:

 

 

function Car() {
}
Car.prototype.color = "blue";
Car.prototype.name = "baoma";
Car.prototype.showColor = function() {
  alert(this.color);
};

 

    代码:

      首先:定义构造函数(Car),其中无任何代码

      其次:利用 prototype 构造属性与函数

 

  当调用new Car()时, 原型的所有属性都会被立即赋予创建的对象,也就是说有 Car 的实例存放的都是指向 showColor() 函数的指针 ,语义上讲:这样所有的属性都属于一个对象

 

  原型方式存在问题:

 

      1、不能使用传递参数方式给属性赋值

      2、当属性的指向是对象 而不是函数时,对象很少被多个实例共享

 

 

5、混合构造函数/原型方式

 

function Car(color,name) {
   this.color = color;
   this.name= name;
  
  };
 }

Car.prototype.showColor = function() {
  alert(this.color);
};

 使用这种方式,基本与其它语言创建对象一个样了。

 

最常用的也是这种方式 

 

这种方式 :既使所有函数都只创建一次,并且使每个对象都具有自己的对象属性实例

 

 

6、也可采用这种方式  动态原型方式

 

function Car(color,name) {
  this.color = color;
  this.name = name;
  if (typeof Car._initialized == "undefined") {
    Car.prototype.showColor = function() {
      alert(this.color);
    };
	
    Car._initialized = true;
  }
} 
 

该方法使用标志(_initialized)来判断是否已给原型赋予了任何方法。该方法只创建并赋值一次

 

 

最常用,最好用的就是第 五,六种,但第六种更完美一些

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值