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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
jquery放大镜效果超漂亮噢
Nov 15 Javascript
JS中的Replace方法使用经验分享
May 20 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
JavaScript预解析及相关技巧分析
Apr 21 Javascript
基于jQuery实现淡入淡出效果轮播图
Jul 31 Javascript
js实现1,2,3,5数字按照概率生成
Sep 12 Javascript
详解如何探测小程序返回到webview页面
May 14 Javascript
vue实现路由切换改变title功能
May 28 Javascript
JavaScript实现左右滚动电影画布
Feb 06 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 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
PHP迭代器的内部执行过程详解
2013/11/12 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
java解析json方法总结
2019/05/16 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
Wallis官网:英国女装零售商
2020/01/21 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
求职个人评价范文
2014/04/09 职场文书
社区活动策划方案
2014/08/21 职场文书
大学生交通专业求职信
2014/09/01 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
财务部会计岗位职责
2015/02/03 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
Python MNIST手写体识别详解与试练
2021/11/07 Python