1、原型模式创建对象
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以有由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那么prototype就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型的好处是可以让所有对象实例共享所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,二是可以将这些信息直接添加到原型对象中,如下面的例子所示。
Person构造函数、Person的原型属性以及Person现有的两个实例之间的关系function Person(){
}
Person.prototype.name = "Nicholas";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function(){
alert(this.name);
}
var person1 = new Person();
person1.sayName(); //"Nicholas"
var person2 = new Person();
person2.sayName(); //"Nicholas"
alert(person1.sayName == person2.sayName); //true
图6-1展示了Person构造函数、Person的原型属性以及Person现有的两个实例之间的关系
2、构造函数、原型和实例的关系
每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
3、原型链
原型链是实现集成的主要方法。通过让原型对象等于另一个类型的实例。显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实力与原型的链条。这就是所谓原型链的基本概念。
SubType继承了SuperType,而SuperType继承了Object
网友评论