Javascript中的原型模式
2016-08-24 08:32
309 查看
我们创建的每个函数都有一个
prototype(原型)属性,这个属性是一个指针,指向一个对象,
而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那
么 prototype
就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以
让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是
可以将这些信息直接添加到原型对象中,如下面的例子所示。
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
PrototypePatternExample01.htm
在此,我们将
sayName()方法和所有属性直接添加到了
Person 的
prototype 属性中,构造函数
变成了空函数。即使如此,也仍然可以通过调用构造函数来创建新对象,而且新对象还会具有相同的属
性和方法。但与构造函数模式不同的是,新对象的这些属性和方法是由所有实例共享的。换句话说,
person1
和 person2
访问的都是同一组属性和同一个 sayName()函数。要理解原型模式的工作原理,
必须先理解
ECMAScript 中原型对象的性质。
prototype(原型)属性,这个属性是一个指针,指向一个对象,
而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那
么 prototype
就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以
让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是
可以将这些信息直接添加到原型对象中,如下面的例子所示。
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
PrototypePatternExample01.htm
在此,我们将
sayName()方法和所有属性直接添加到了
Person 的
prototype 属性中,构造函数
变成了空函数。即使如此,也仍然可以通过调用构造函数来创建新对象,而且新对象还会具有相同的属
性和方法。但与构造函数模式不同的是,新对象的这些属性和方法是由所有实例共享的。换句话说,
person1
和 person2
访问的都是同一组属性和同一个 sayName()函数。要理解原型模式的工作原理,
必须先理解
ECMAScript 中原型对象的性质。
相关文章推荐
- javascript 原型模式实现OOP的再研究
- javascript 原型模式实现OOP的再研究
- JavaScript学习笔记(三十四) 经典模式四-共享原型
- 初涉JavaScript模式 (7) : 原型模式 【三】
- 初涉JavaScript模式 (6) : 原型模式 【二】
- javascript原型模式实现OOP的再研究
- javascript创建对象之动态原型模式(五)
- 深入理解JavaScript系列(42):设计模式之原型模式
- Javascript之创建对象(原型模式)
- javascript创建对象之原型模式(三)
- javascript原型模式实现OOP
- javascript中创建自定义类型的最常见的方式_组合使用构造函数模型和原型模式,动态原型模式
- JavaScript面向对象程序设计三 原型模式(上)
- JavaScript学习笔记(三十三) 经典模式三 借用构造方式并设置原型
- javascript 设计模式一:原型模式
- javascript原型模式实现OOP的再研究
- JavaScript面向对象程序设计三——原型模式(上)
- 深入理解JavaScript系列(42):设计模式之原型模式
- Javascript--动态原型模式
- javascript创建对象之函数构造模式和原型模式结合使用(四)