js如何用面向对象的思路去编写一个程序
来源:互联网 发布:网络评卷系统 编辑:程序博客网 时间:2024/06/05 17:46
本文主要介绍笔者对于面向对象的代码结构的一点理解
最开始做前端往往是单个功能的做,操作页面某个元素实现某个功能,或者基于某个框架去实现功能,面向对象的结构要么用不到,要么框架已经给出。所以即便是很早就知道js的面向对象,但依然很少去实践,也有很多前端开发人员用不上,因为要么用框架的,要么用别人做好的,因为笔者也经历过前端牛人带着做项目,他就告诉你,哪儿哪儿哪儿写代码能达到什么效果,哪一块哪一块是干什么的,把我的工作简化到单个的功能,极其简单
而在更深入的前端开发里面,比如说要做一个js的工具文件,以前用dropbox的sdk架子做了一个发包工具,它里面封的很好,各个模块也分离出来了,里面用到了模块化,这里不讨论模块的问题,只讲最简单的面向对象
比如现在要做一个网络拓补图的util,你找到一个jtopo框架来作为基础框架,在它的基础上,你要去实现很多功能
那么首先定义一个util对象,对象里面有很多功能也就是一个独立的方法,这些方法有时候需要用到一些共用的数据,或者初始化数据,等一系列数据,所以先建一个util.config配置对象
var util = { config : { times : 0, id : 1, }}
然后里面有各种方法 我们先从暴露出去,也就是提供给外部使用的方法开始,初始化init,放大,缩小。。。
var util = { config : { }, init : function (){}, big : function (){}, small : function (){},}
这些简单的功能,一些简单的函数可以解决,而一些复杂的功能,如果写成一个函数,茫茫多的一个代码块,看的头晕对么,会有大量代码重复,修改起来很麻烦,看上去一眼都不知道程序走到哪一步了,所以把单独的,共用的代码块提出来作为基础功能方法,分离功能时要确保他的独立行,能保证其独立的运行并完成功能
addNode : function(){},//添加节点stateForward : function(){},//模拟编辑器的回退功能stateBack : function(){},//模拟编辑器的前进功能
以上这种编程方法的好处是,以后要添加新功能了,里面像addNode这种方法可以直接调用,如果要在添加节点addNode时做一些操作时,也可以在里面直接写,有了bug知道是哪一个环节出了问题,不会大海捞针的去遍历代码,像stateForward 这种方法的实现肯定有多个环节,笔者的思路是,每次图上的节点变化时存一个状态对象到util.config.state数组里面,当然这里面还要依赖一个保存拓补图为数据对象的方法和一个渲染数据为拓补图的方法,记录当前的state位置statePosition属性, 前进statePosition加一,利用util.config.state[util.config.statePosition]这个数据对象来渲染拓补图
像这样一个功能模块就完成了,程序流程清晰,代码看着也比一整块的舒服
- js如何用面向对象的思路去编写一个程序
- sofsip学习系列---如何用C编写面向对象的代码
- 如何用CodeBlocks分多个文件编写一个C++程序
- 如何用vc2005托管代码编写一个oledb创建access2003数据库的程序?
- 如何用python编写一个绘制马赛克图像的自写程序mask = np.zeros
- 以面向对象方式编写一个计算电话费的程序
- 继承机制编写程序,利用面向对象思路解决实际问题
- 如何用c写出面向对像的程序
- 求助!!如何用VB编写连接Informix的程序
- 如何用Delphi7编写WinXP界面的程序
- 如何用_R_语言的_Shiny_库编写_web_程序
- 如何用记事本编写你的第一个Java程序
- 如何用Python编写一个简单的爬虫
- 在android需要大量使用xml进行网络传输时,如何用面向对象的思路降低xml的耦合性并增加重用性
- 如何用C语言实现面向对象
- 如何用VB编写OPC客户端程序
- 如何用VB编写NT服务程序
- 如何用VB编写OPC客户端程序
- Mybatis的使用与Spring的整合
- vnc操作使用指南----开启多个VNCserver
- RN iOS网络是否连接bug
- 小程序-广告轮播/控制属性
- Makefile 使用总结
- js如何用面向对象的思路去编写一个程序
- opencv学习(二)计算图像的直方图和表示为柱状图
- Debian下安装Typora
- 指定状态过滤
- PHP使用header设置浏览器缓存
- 17110102_Windows系统下WebLogicServer12cR2安装详解
- iPhone手机浏览器运行嵌入页面的iframe时候会撑全屏,页面在安卓手机上正常,解决办法
- 让VirtualBox虚拟机实现开机自动后台运行
- ros下使用hokuyo