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