Javascript面向对象编程之二:类的定义

来源:互联网 发布:java怎么打开mysql 编辑:程序博客网 时间:2024/06/06 15:41

在上一篇中,我们定义了两个类,Viewer类和Cat类。在这一篇中,我们将谈到定义类的几种方法。

在javascript中,可以按照以下三种方式定义一个类,这三种方法也是阮一峰推荐的。

1、构造函数法

function Cat() {    this.name = "大毛";}

这里面,this指的是实例对象。

生成实例时,使用new关键字:

var kitty=new Cat();alert(kitty.name);

javascript对象都可以通过prototype拓展对象的属性和方法:

Cat.prototype.makeSound = function(){    alert("喵喵喵");}

我比较倾向于使用这种方法,在上一篇中定义类时用的也是这个方法。

2、Object.create()法

用这个方法,”类”就是一个对象,不是函数。

var Cat = {name: "大毛",makeSound: function(){ alert("喵喵喵"); }};

然后,直接用Object.create()生成实例,不需要用到new。

这种方法比”构造函数法”简单,但是不能实现私有属性和私有方法,实例对象之间也不能共享数据,对”类”的模拟不够全面。

3、极简主义法

荷兰程序员Gabor de Mooij提出了一种比Object.create()更好的新方法,他称这种方法为”极简主义法”(minimalist approach)。我在第一次定义javascript类时,使用的就是这种方法。它的好处需要你对比三种方法后才能感觉到。

var Cat = {createNew: function(){var cat = {};cat.name = "大毛";cat.makeSound = function(){ alert("喵喵喵"); };return cat;}};

然后,在createNew()里面,定义一个实例对象,把这个实例对象作为返回值。

这种方法的好处是,容易理解,结构清晰优雅,符合传统的”面向对象编程”的构造,因此可以方便地部署下面的特性。

0 0