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 相关文章推荐
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
js获取url参数值的两种方式
Sep 10 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
jQuery实现背景滑动菜单
Dec 02 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
Angular通过指令动态添加组件问题
Jul 09 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
Jan 29 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
Vue 封装防刷新考试倒计时组件的实现
Jun 05 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 Javascript
JS实现手风琴特效
Nov 08 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
php 读取shell管道传输过来的内容
2010/03/01 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
JQuery创建DOM节点的方法
2015/06/11 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
python调用windows api锁定计算机示例
2014/04/17 Python
python中的编码知识整理汇总
2016/01/26 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
创建无烟单位实施方案
2014/03/29 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL