首先举个形象的例子,如果建筑是基于类的系统,则建筑师会先画出房子的蓝图,然后房子都按照该蓝图来建造;如果建筑是基于原型的,建筑师首先会建一所房子,让后将房子都建成这种模样。
基于类的 | 基于原型的 |
---|---|
1.定义类 | 1.定义原型对象 |
2.定义类的构造函数 | 2.定义对象的构造函数 |
3.实例化对象 | 3.将构造函数关联到原型 |
4.实例化对象 |
基于类的对象实现
/* step 1 */
public class Prisoner{
public int sentence = 4;
public int probation = 2;
public string name;
public string id;
/* step 2 */
public Prisoner(string name,string id){
this.name = name;
this.id = id;
}
}
/* step 3 */
Prisoner firstPrisoner = new Prisoner("Dan","200128");
Prisoner secondPrisoner = new Prisoner("Jenny","200127");
基于原型的对象实现
//* step 1 *
var proto = {
snetence:4,
prabation:2
};
//* step 2 *
var Prisoner = function(name,id){
this.name = name;
this.id = id;
}
//* step 3 *
Prisoner.prototype = proto;
//* step 4 *
var firstPrisoner = Object.create(proto);
firstPrisoner.name = "Dan";
firstPrisoner.id = "200128";
var secondPrisoner = Object.create(proto);
secondPrisoner.name = "Jenny";
secondPrisoner.id = "200127";
在每个方法中都是首先创建对象的模板,模板在基于类的编程中叫做类,在基于原型的编程中叫做原型对象。但他们的作用都一样:作为创建对象的结构。