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


Posted in Javascript onOctober 23, 2011

在网上看了很多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 更好

Javascript 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
javascript 尚未实现错误解决办法
Nov 27 Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
js淡入淡出焦点图幻灯片效果代码分享
Sep 08 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
Javascript动画效果(4)
Oct 11 Javascript
angularjs中ng-bind-html的用法总结
May 23 Javascript
js通过Date对象实现倒计时动画效果
Oct 27 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
Oct 23 #Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 #Javascript
js两行代码按指定格式输出日期时间
Oct 21 #Javascript
jQuery中live方法的重复绑定说明
Oct 21 #Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 #Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
Oct 21 #Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
Oct 21 #Javascript
You might like
S900/ ETON E1-XM 收音机
2021/03/02 无线电
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python使用scrapy解析js示例
2014/01/23 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
师德学习感言
2014/01/31 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
房产授权委托书范本
2014/09/22 职场文书
2014年教育工作总结
2014/11/26 职场文书
检讨书范文300字
2015/01/28 职场文书
开业典礼致辞
2015/07/29 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
Python find()、rfind()方法及作用
2022/12/24 Python