对Javascript系列的深入理解(42):设计模式的详细原型模型

介绍

原型模式(原型)指的是原型实例所指示的创建对象的类型,以及通过复制原型创建新对象的类型。

文本

对于原型模式,我们可以使用Javascript的典型原型继承特性创建对象,也就是说,创建的对象是另一个对象的原型属性值,原型对象本身有效地利用了每个构造函数创建的每个对象。例如,如果构造函数的原型包含name属性(参见后面的示例),这个构造函数创建的对象将具有此属性。

在现有的文献中,我们可以看到原型模式的定义,但是对于Javascript,您可能会发现很多关于类的解释。但事实是,基于原型继承的Javascript完全避免了类(类)的概念,我们只是从现有对象复制对象来创建对象。

作为真正的原型继承了ecmascript5标准的最新版本,使用object.create方法创建该对象,该方法创建指定对象与指定对象的原型对象(第一个参数是对象在指定属性的方法),也可以包含其他optional.object.create(原型,optionaldescriptorobjects),例如,也可以在下面的例子中看到:

复制代码代码如下所示:

不是因为构造函数,所以使用资本

无功somecar = { {

驱动器:函数(){ },

马自达3的名字:

};

/ /创建一个新的X object.create

无功anothercar = object.create(somecar);

anothercar.name =丰田美;



object.create跑你直接从其他对象,使用这种方法的二参数,你可以初始化附加其他属性,例如:

复制代码代码如下所示:

var车辆{ { {

getmodel:函数(){

console.log('vehicle的模具:+这个模型);

}

};

VAR车= object.create(车辆,{

id:{

价值:my_global.nextid(),

枚举:真实 /可写:假配置:默认假。

},

模型{

价值:福特,

枚举:真

}

});



在这里,你可以使用对象字面量进口附加属性初始化在object.create二参数,它的语法和object.defineproperties或object.defineproperty方法类型,它允许你设置的属性,如可枚举,可写,或可配置。

如果你想实现的原型,你不使用object.create直接。你可以使用代码像上面的例子如下:

复制代码代码如下所示:

无功vehicleprototype = { {

初始化:功能(carmodel){

方法= carmodel;

},

getmodel:函数(){

console.log('vehicle模具:+这个模型);

}

};



功能车(模型){

函数f(){ };

f.prototype = vehicleprototype;

新的f();

F.init(模型);

返回F;

}

VAR车车辆('ford保驾护航);

Car.getModel();



总结

Javascript中原型的使用几乎无处不在。许多其他模型也基于原型。没什么要说的。这里应注意浅拷贝和深拷贝的问题,以避免引用问题。