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

 更新时间:2011年05月29日 22:35:48   作者:  
一下用面向对象的相关概念来解释js中的仿面向对象,因为js中不像其他语言,不存在面向对象语言的相关特性
静态动态成员
一下用面向对象的相关概念来解释js中的仿面向对象,因为js中不像其他语言,不存在面向对象语言的相关特性,但可以通过一些技巧来模仿面向对象。我用同样的概念来概述js的这些方仿面向对象的概念,因为他们的行为作用类似。

在js中有如下函数

复制代码 代码如下:

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


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

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

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

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

信息的封装和隐藏

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

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

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

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

相关文章

  • javascript倒计时效果实现

    javascript倒计时效果实现

    这篇文章为大家分享了javascript倒计时效果实现代码段,现今团购网、电商网、门户网等,常使用时间记录重要的时刻,如时间显示、倒计时差、限时抢购等,特别是双十一活动,需要的朋友可以参考下
    2015-11-11
  • JavaScript屏蔽指定区域内右键菜单

    JavaScript屏蔽指定区域内右键菜单

    有时候需要屏蔽部分区域内的右键菜单,下面的代码大家可以测试下。
    2010-03-03
  • getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现

    getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现

    天在csdn上看到有人问 getElementsByTagName 和 selectNodes谁更快 ,这个还真没研究过。
    2010-02-02
  • Javascript中级语法快速入手

    Javascript中级语法快速入手

    本文是一篇关于Javascript的中级进阶总结。小编希望大家能够在30分钟之内阅读完并认真体会,多敲代码,多总结,毕竟Javascript本身并不难。
    2016-07-07
  • JavaScript中this绑定规则你理解了吗

    JavaScript中this绑定规则你理解了吗

    JavaScript中的this是一个非常重要的概念,也是一个令新手开发者甚至有些不深入理解的多年经验开发者都会感到困惑的概念,如果你希望自己能够使用this编写更好的代码或者更好理解他人的代码,就跟随小编一起理解一下this吧
    2023-07-07
  • webpack.DefinePlugin与cross-env区别详解

    webpack.DefinePlugin与cross-env区别详解

    这篇文章主要介绍了webpack.DefinePlugin与cross-env区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • JavaScript获取页面中第一个锚定文本的方法

    JavaScript获取页面中第一个锚定文本的方法

    这篇文章主要介绍了JavaScript获取页面中第一个锚定文本的方法,涉及javascript操作document.archors数组的技巧,需要的朋友可以参考下
    2015-04-04
  • 一起来看看JavaScript数据类型最详解

    一起来看看JavaScript数据类型最详解

    这篇文章主要为大家详细介绍了JavaScript数据类型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • JavaScript中的作用域链和闭包

    JavaScript中的作用域链和闭包

    JavaScript中出现了一个以前没学过的概念——闭包。何为闭包?从表面理解即封闭的包,与作用域有关。所以,说闭包以前先说说作用域
    2012-06-06
  • 微信小程序 函数防抖 解决重复点击消耗性能问题实现代码

    微信小程序 函数防抖 解决重复点击消耗性能问题实现代码

    这篇文章主要介绍了微信小程序使用函数防抖解决重复点击消耗性能问题实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论