Bootstrap

javascript设计模式-构造器(Constructor)模式

1.对象原型__proto__和构造函数原型对象prototype里面都有一个constructor属性

2.constructor  称为构造函数  因为它的作用是用于new的实例对象指回构造函数本身

3.constructor 主要用于记录该对象是用于那个构造函数  它可以让原型对象prototype重新指向原来构造他的构造函数

注:如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,则必须手动的利用constructor指回原来的构造函数

1.基础Constructor构造器模式

// 使用函数来模拟一个Car类

function Car(model,year,miles) {
	this.model = model ;
	this.year = year;
	this.miles = miles;

	this.toString = function () {
		return this.model + "已经行驶了" + this.miles + "米";
	}
}

//调用
var honda = new Car("东风Honda",2009,20000);//实例化Car

//输出结果
console.log(honda.toString());

缺点:

  1. 继承困难;
  2. toString()是为每个使用Car构造器创建的新对象而分别重新定义的。这样不理想,因为这种函数应该在所有的Car类实力之间共享。

1.2进阶 带原型的Constructor构造器模型

function Car(model,year,miles) {
	this.model = model ;
	this.year = year;
	this.miles = miles;

	//每个对象都有构造器原型的所有属性。
	Car.prototype.toString = function() {
		return this.model + "已经行驶了" + this.miles + "米";
	}
}
//调用
var honda = new Car("东风Honda",2009,20000);//实例化Car
console.log(honda.toString());

优点:

  1. toString()的单一实例能够在所有的Car对象之间共享。
;