js 静态动态成员 and 信息的封装和隐藏


Posted in Javascript onMay 29, 2011

静态动态成员
一下用面向对象的相关概念来解释js中的仿面向对象,因为js中不像其他语言,不存在面向对象语言的相关特性,但可以通过一些技巧来模仿面向对象。我用同样的概念来概述js的这些方仿面向对象的概念,因为他们的行为作用类似。

在js中有如下函数

function test(){ 
var var_value; 
this.this_value; 
}

其中,var_value是静态成员,this_value是动态成员。

静态成员是关联到类本身的,只能在类的层次进行调用。这种特性是在实例化对象中var_value在内存中只保留一份,不会占用太多的内存。但他也有缺点,如果在继承方面上派生会有问题,无法派生。所以如果要派生子类,不宜采用此方法。

动态成员,这关联到对象上。这种做法是叫做门户大开型。在每一个该类的对象中在内存都存在一份属性和方法的副本,也就是说,实例化多少个对象,就有多少个内存副本。这在效率上来说不是件好事,但其实用可行性是比较高的。虽说内存占用多,不过也可以通过一些技巧来尽量的减少带来的内存开销。

暂时就讲这么多,也许有空空乏。不过在往后的随笔中会结合更多的例子,做更深层次剖析。

信息的封装和隐藏

简单来说就是如何处理信息。隐藏是目的,封装是达到目的用的技术。封装可以被定义为对对象内部的数据表现形式和实现细节进行隐藏。上面说到的成员问题也是信息处理的途径,这里是如何用这些成员来封装,当然,还有用到其他东西。

通常封装用的比较广泛的几种依据是:作用域、嵌套函数、闭包,这些概念上有交集,要共同来达到目的。至于具体怎么封装也难以解释,在往后的随笔中同样会结合更多的例子做更深层次的剖析。

封装的优点是:保持了内部数据的完整性和逻辑性,它对变量实施了限制和约束。弱化模块间耦合。

缺点是:封装后的js代码有大部分是复杂的,因为js实现封装本身就比较难,不像其他语言。这也是js灵活的双刃剑。封装后的代码调试起来也比较困难,这需要更分钟的作用域打交道,也依靠强大的调试工具。假如程序用的是一种设计模式,如果对于一个不熟悉某种模式的程序员是会觉得难以理解的。这就需要借助良好的代码注释或说明文档了。

Javascript 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
JavaScript 提升运行速度之循环篇 译文
Aug 15 Javascript
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
javascript常用经典算法详解
Jan 11 Javascript
servlet+jquery实现文件上传进度条示例代码
Jan 25 Javascript
基于JavaScript实现验证码功能
Apr 01 Javascript
Angular 2父子组件之间共享服务通信的实现
Jul 04 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
JS实现在线ps功能详解
Jul 31 Javascript
解决vue 退出动画无效的问题
Aug 09 Javascript
梳理一下vue中的生命周期
Dec 30 Vue.js
在JavaScript中监听IME键盘输入事件
May 29 #Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
May 28 #Javascript
Jquery css函数用法(判断标签是否拥有某属性)
May 28 #Javascript
最新28个很棒的jQuery 教程
May 28 #Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
May 28 #Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 #Javascript
jquery 图片上传按比例预览插件集合
May 28 #Javascript
You might like
汉字转化为拼音(php版)
2006/10/09 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
json 实例详细说明教程
2009/10/31 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
python开发中range()函数用法实例分析
2015/11/12 Python
python3.5仿微软计算器程序
2020/03/30 Python
Python 备份程序代码实现
2017/03/06 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
django允许外部访问的实例讲解
2018/05/14 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
jupyter notebook 多行输出实例
2020/04/09 Python
python程序如何进行保存
2020/07/03 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
软件配置管理有什么好处
2015/04/15 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
工作交流会欢迎词
2014/01/12 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
python turtle绘图命令及案例
2021/11/23 Python