码迷,mamicode.com
首页 > 编程语言 > 详细

一头扎进JavaScript设计模式(一)- 构造器模式(Constructor)

时间:2016-05-13 08:25:20      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

一、前言

  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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!