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 相关文章推荐
一段效率很高的for循环语句使用方法
Aug 13 Javascript
js压缩工具 yuicompressor 使用教程
Mar 31 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
Jul 28 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
前端开发过程中浏览器版本的两种判定方法
Oct 30 Javascript
jquery实现网页查找功能示例分享
Feb 12 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
Bootstrap4 gulp 配置详解
Jan 06 Javascript
详解Vue前端生产环境发布配置实战篇
May 07 Javascript
解决layer弹出层自适应页面大小的问题
Sep 16 Javascript
在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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
教大家使用Python SqlAlchemy
2016/02/12 Python
Python探索之自定义实现线程池
2017/10/27 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Python登录系统界面实现详解
2019/06/25 Python
python3 线性回归验证方法
2019/07/09 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
为什么python比较流行
2020/06/19 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
运动会入场式解说词
2014/02/18 职场文书
五四青年节演讲稿
2014/05/26 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
婚前财产协议书范本
2014/10/19 职场文书
2015年采购员工作总结
2015/04/27 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python