您的位置:首页 > Web前端 > JavaScript

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

2014-12-09 09:36 253 查看


在上一篇中,我们定义了两个类,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()里面,定义一个实例对象,把这个实例对象作为返回值。

这种方法的好处是,容易理解,结构清晰优雅,符合传统的”面向对象编程”的构造,因此可以方便地部署下面的特性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: