js面向对象设计用{}好还是function(){}好(构造函数)

 更新时间:2011年10月23日 14:18:45   作者:  
js面向对象设计用{}好还是function(){}好,大家给予了回复,感觉不错,特分享给大家。
在网上看了很多JavaScript的项目, 用到对象都是采用{}的形式:
例如jQuery, TinyMCE等都是形如:
复制代码 代码如下:

var Dialog =
{
int : function() { .... },
insert : function() { .... },
pop : function() { .... }
};
//调用就是:
Dialog.init();


而我自己一直使用function闭包的方式, 感觉使用内部私有成员(函数,变量)更方便:
复制代码 代码如下:

function classDialog()
{
var box = "sdfsdf"; //init, insert等函数中调用公共变量就会很方便, 调用内部函数也很方便(如可以直接调用 search()).

this.init = function() { .... };
this.insert = function() { .... };
this.pop = function() { .... };

function search() { .... }
}
var Dialog = new classDialog();
Dialog.init();

看到TinyMCE在需要使用似有函数的时候, 是在init : function() { } 这个函数内部又定义了一个函数, 但是这样的话, 这个函数就只能 init调用, 其他方法就没办法共用这个私有函数了.
当然暂时还没有看到一个私有函数被多个公共函数调用的例子.


我想问问各位大神么, 既然function(){} 闭包创建对象使用那么方便, 为什么 {} 方法还用的那么广泛呢?

是不是 function() {} 创建的对象有什么缺陷?

回复:
对于直接使用{}创建对象..这种情况在创建极少数对象的情况下且不需要封装的情况下使用,对于需要批量创建对象的情况使用构造函数来实例化对象就非常方便 主要还是看具体的情况吧

这两种是完全不一样的东西。

{}可以算做一个单例(单例模式)

function(){} 这种返回一个对象。每次都NEW的时候返回都是一个不同的对象!

上面有同学也说了 {} 更效率了。而且不用new。{} 全局固定,可任意扩展。

一般来说{}确实效率高,使用简单随意,不过不想暴漏某些方法时候用 function 更好

相关文章

  • DOMAssitant最新版 DOMAssistant 2.5发布

    DOMAssitant最新版 DOMAssistant 2.5发布

    google code上的project ,值得大家学习它的类库
    2007-12-12
  • js 简单类代码

    js 简单类代码

    js类的封装方法,说实话我也是新手,一直没涉及到js的类,下面的代码,应该看的懂,不懂就先用脑子记下了,见得多了就会了
    2008-05-05
  • JS类的封装及实现代码

    JS类的封装及实现代码

    js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类.
    2009-12-12
  • javascript 面向对象编程 function也是类

    javascript 面向对象编程 function也是类

    function在javascript中用来创建函数或方法,但要想实现面向对象方式的编程,类是不可或缺的角色之一,而且是主角。
    2009-09-09
  • JavaScript为对象原型prototype添加属性的两种方式

    JavaScript为对象原型prototype添加属性的两种方式

    为对象原型prototype添加属性的的方法, 需要的朋友可以参考下。
    2010-08-08
  • 用JavaScript实现单继承和多继承的简单方法

    用JavaScript实现单继承和多继承的简单方法

    JavaScript是一种强大的多泛型编程语言,其融合了面向过程、面向对象和函数式编程于一身,具备强大的表现能力。
    2009-03-03
  • JavaScript 继承使用分析

    JavaScript 继承使用分析

    继承,通俗地说,之前你写过一些类,这些类中有一些是而你现在要写的类的功能的子集或者基本相同,那么你不用完全重新写一个新的类,你可以把之前写的类拿过来使用.这样的一种代码重用过程就叫做继承
    2011-05-05
  • js对象的构造和继承实现代码

    js对象的构造和继承实现代码

    js对象的构造和继承实现代码,学习javascript面向对象的朋友可以参考下。写出跟漂亮与复用的代码。
    2010-12-12
  • JavaScript 设计模式之组合模式解析

    JavaScript 设计模式之组合模式解析

    “组合模式”顾名思意就是将多种实现组合在一起而达到牵一处而动全身的效果。
    2010-04-04
  • javascript 面向对象的JavaScript类

    javascript 面向对象的JavaScript类

    这一节来说下紧接着的一个概念——类。虽然JavaScript中没有class关键字,但作为开发人员我们一定要有这个思想。在C#中类可以分为实例类和静态类,JavaScript亦然。
    2010-05-05

最新评论