标签:
一、前言
1.对象是什么?怎么创建?怎么赋值?
在这边就不展开讲了,请参考另外一篇博文JavaScript 对象详解。
2.Contructor是什么?
在这边我们先运用书上的一段话:在经典的面向对象变成语言中,constructor是一种在内存已分配给该对象的情况下,用于初始化新创建对象的特殊方法。
3.Constructor有什么用?
当我们实例化一个对象的时候,对象的构造器会根据你实例化时的参数进行初始化,设置成员属性和方法的值。
二、基本 Constructor
我们创建一个Person对象,并且添加成员属性和方法,最后实例化并且运行方法。
代码如下:
// 定义一个Person对象
function Person(name,country){ this.name = name; this.country = country;
this.speak = function(){ console.info(‘my name is ‘ + this.name + ‘,I\‘m form ‘ + this.country); }; } var p1 = new Person(‘Niki‘,‘China‘); // 实例化一个Person对象 var p2 = new Person(‘Bob‘,‘England‘); // 实例化一个Person对象
p1.speak(); // my name is Niki,I‘m form China
p2.speak(); // my name is Bob,I‘m form England
三、带原型的 Constructor
上面那个基本的Constructor案例我们可以看出,有些方法其实各个对象之间是相同的,所以我们可以放在Person对象的原型中,从而达到方法在所有Person对象中共享的目的。
代码如下:
//定义一个Person对象
function Person(name,country){ this.name = name; this.country = country; }
//在Person对象的原型中添加公共方法 Person.prototype.speak = function(){ console.info(‘my name is ‘ + this.name + ‘,I\‘m form ‘ + this.country); };
var p1 = new Person(‘Niki‘,‘China‘); var p2 = new Person(‘Bob‘,‘England‘);
p1.speak(); // my name is Niki,I‘m form China p2.speak(); // my name is Bob,I‘m form England
注意:
我们是添加原型方法而不是重写原型,所以我们要用的是:
Person.prototype.speak = function(...){ //... }
而不是:
Person.prototype = { speak : function(...){ //... } }
后者会吧Person对象的整个原型重写,如果前面有添加过其他原型则会导致其他原型方法丢失。
一头扎进JavaScript设计模式(一)- 构造器模式(Constructor)
标签:
原文地址:http://www.cnblogs.com/mangoniki/p/5485281.html