首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

研讨在 JavaScript 实现类的方式

2013-09-05 
探讨在 JavaScript 实现类的方式原文信息JavaScript Objectshttp://www.codeproject.com/Articles/637892/

探讨在 JavaScript 实现类的方式
原文信息

JavaScript Objects

http://www.codeproject.com/Articles/637892/JavaScript-Objects  
探讨在 JavaScript 实现类的方式

在 javascript 中有很多方式来创建对象,所以创建对象的方式使用起来非常灵活。那么,到底哪一种方式是最恰当的对象创建方式呢?构造模式,原型模式还是对象原意模式(Object literal)呢?

但这些模式具体是怎么回事呢?

在开始讲解之前,让我们先清楚地介绍一下关于 javascript 基本知识。

有没有可能在 javascript 中实现面向对象编程的方式呢?

答案是可能的,javascript 是可以创建对象的!这种对象可以包含数据及能够操作数据的方法,甚至可以包含其他对象。它没有类但拥有构造函数;它没有类继承机制,但是可以通过原型(prototype)实现继承。

现在看起来,我们已经了解了在 javascript 中创建对象及实现基于对象编程时所必须的组成部分。

我们都知道 javascript 拥有私有变量。一个通过“var”关键字定义的变量,只能在函数体中被访问,而不能在函数外被访问。那么,如果我们不通过使用“var”关键字来定义变量会怎样呢?我们现在不对这个问题进行深入探讨,可能是通过“this”进行访问的,我会在另外的时间来详细讲述这个问题。

现在回到之前的问题。到底哪一种方式是最恰当的对象创建方式呢?
让我们用已经知晓的知识,通过创建Person的对象是来试验一下。

(function () {    var Person = function () {        this._fullName = '';        this.welcomeMessage = '';        this.firstName = '';        this.lastName = "";_that = this;        this._createFullName = function () {            this.ChangeMessage('Namaste');            this._fullName = this.firstName + ' ' + this.lastName;        };    }    //Shared Functions for Code optimization    Person.prototype = {        constructor: Person,        getFullName: function () {            this._createFullName();            return this.welcomeMessage + ' ' + this._fullName;        },        ChangeMessage: function (mesg) {            this.welcomeMessage = mesg;        }    }    this.Person = Person;})();var person1 = new Person();person1.firstName = 'Eli';person1.lastName = 'Flowers';person1.ChangeMessage('Welcome');var message = person1.getFullName(); // Namaste Eli  Flowersalert(message);

我不是说你不应该考虑 “private” 或者类似的知识。你是代码的设计者,所以你将知道怎么来管理并且知道怎么做才是最好的。根据你的需求,你可以使用任何一种设计模式或者多个设计模式组合一起使用。

无论你决定采用哪种设计模式,始终记住做尽量少的事情,不要在全局作用范围内实现闭包,尽量减少内存泄露,以及优化代码,并且组织好代码。所以,尽量多了解些作用域,闭包以及 “this” 的表现行为。

最后,祝编程愉快!

译后感

经常使用 javascript,对于它的印象一直都是直接拷贝过来就可以用的。最近使用 extjs,它的类框架非常好用。从这样文章也明白在 javascript 中实现类的各种方式,以及在文章最后讨论了类中私有成员的实现情况。





2楼hailongshih4天前 22:58
为什么构造模式和对象原意模式代码一样
Re: lvye12214天前 23:00
回复hailongshihn谢谢你的提醒,是我的疏忽,将构造模式的代码拷贝错了。现在文章已经更正。n构造模式实际是一个函数,可以通过 new 关键字来创建对象。相对于 对象原意模式,更接近于创建对象的方式。
1楼NIHAOX14天前 08:56
很不错 讲解得也透彻n如果可以再加上一些 原型类的基础n就是一篇 很好的JS类入门 文章了
Re: lvye12214天前 10:43
回复NIHAOX1n呵呵,谢谢你的称赞。以后有机会我会再发布关于原型类的文章。

热点排行