`
chrnc
  • 浏览: 9607 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用闭包技术实现成员变量私有的javascript bean

阅读更多
标题看着挺高竿儿的,其实没啥  ~
 function jsBean(){
  this.field1 = null;
  var field2 = null;
  this.setField2= function(arg){
   field2 = arg;
  }
  this.getField2 = function(){
   return field2;
  }
 }



测试代码:
var bean = new jsBean();
alert(bean.field1);  //弹出 null
alert(bean.field2);//弹出 undefined
alert(bean.getField2());//弹出 null


在javascript中,function 才是最高级别的对象~

有人说了,闭包干啥,直接都暴露出来不就好了?
有人说了,有这样的东西有什么用?我在javascript里面从来也用不到,它既不能直接放到一个text 文本框里面,也不能传给ajax后台....
答案很简单,这样写更面向对象,你的代码更易读易维护....,想象一下你的java code为什么不用String 和 int double 这些类型到处用,而是在需要的时候定义一个VO?
分享到:
评论
2 楼 fins 2008-11-20  
wilsonxu 写道
1.每次new jsBean()时,都会创建新的函数对象,造成重复建设.事实上,函数是可以通过propotype共享的.

function jsBean(){ 
  this.field1 = null; 
  var field2 = null; 
}

jsBean.propotype.setField2= function(arg){ 
  field2 = arg; 

jsBean.propotype.getField2 = function(){ 
  return field2; 


2. 闭包最大的作用:把数据(外部函数的参数或局部变量)和其操作(内部函数)优雅地打包,生成一个移植性高的代码单元.


你在1 中的示例 根本就不对哦

get set方法中 操作的 field2  是全局的
不是 jsBean函数内部定义的那个.

不信你可以试一试  让jsBean函数内部的 field2 =123
然后 你调用 get方法试一试 看一看是什么现象.


而你在 2 中所描述的那个闭包的作用我也不是很认同
当然 这个是仁者见仁的东西 没必要讨论个对错 但是1 中的代码确实错误了

另外 1中最开始的那句话 说的也不完全正确
你要相信js引擎的优化能力.

1 楼 wilsonxu 2008-11-19  
1.每次new jsBean()时,都会创建新的函数对象,造成重复建设.事实上,函数是可以通过propotype共享的.

function jsBean(){ 
  this.field1 = null; 
  var field2 = null; 
}

jsBean.propotype.setField2= function(arg){ 
  field2 = arg; 

jsBean.propotype.getField2 = function(){ 
  return field2; 


2. 闭包最大的作用:把数据(外部函数的参数或局部变量)和其操作(内部函数)优雅地打包,生成一个移植性高的代码单元.

相关推荐

    JavaScript闭包函数访问外部变量的方法

    它可以用于模块化编程、数据封装、创建私有变量、实现回调函数等场景。掌握闭包的正确使用方式,对于编写高效、可维护的代码非常重要。需要注意的是,闭包虽然功能强大,但也会导致一些性能问题,例如过多的闭包可能...

    JavaScript闭包研究及典型应用.pdf

    3. 通过保护变量的安全实现 JavaScript 私有属性和私有方法 JavaScript 闭包在动画效果中的应用 在网页中实现动画效果主要是利用 JavaScript 脚本语言和 CSS 来改变文档对象的属性,其中主要是改变 3 个 CSS 属性...

    基于JavaScript编程语言之闭包技术在焦点轮播上的应用 (1).pdf

    JavaScript行为层主要是使用闭包技术实现图片的自动播放和前一张、后一张的效果。 本文通过实例代码和详细的解释,帮助读者深入了解JavaScript编程语言中的闭包技术和焦点轮播的实现方法。 知识点: 1. 闭包技术...

    javaScript闭包技术资料

    ### JavaScript闭包技术详解 #### 一、闭包的基本概念 **闭包**是JavaScript中一个重要的概念,它涉及到函数的执行环境、作用域链等关键要素。简单来说,闭包是一个函数及其相关的引用环境的组合。具体而言,当一...

    基于闭包的JavaScript面向对象编程框架.pdf

    通过使用闭包,可以实现类的定义,并指定类的名称、父类、类的静态私有成员和公共成员。 继承是基于类的面向对象编程语言的另一个基本特征。通过使用闭包,可以实现继承,并指定子类和父类之间的关系。 多态是基于...

    javascript使用闭包模拟对象的私有属性和方法

    需要注意的是,虽然闭包可以保护变量不被外部直接访问,但并非所有的 JavaScript 开发者都推荐使用闭包来模拟私有变量和方法。这是因为闭包会阻止变量所占用的内存被垃圾回收,这可能会导致内存泄漏,尤其是在闭包...

    使用XMLHTTPRequest实现自定义ajax。javascript闭包模式写法。值的学习

    这个函数将使用闭包模式,以保持私有变量和方法的封装。闭包是JavaScript中的一个重要特性,它可以访问并操作函数内部的变量,即使在函数执行完毕后,这些变量依然存在。下面是一个使用闭包模式实现的Ajax函数示例:...

    javascript闭包的理解

    通过闭包可以实现数据封装和隐藏,这类似于面向对象编程中的私有成员。函数可以返回内部函数,并将这个内部函数作为闭包传递给外部,使得外部代码无法直接访问内部函数的局部变量,而只能通过闭包提供的接口来进行...

    js代码-函数表达式 闭包 私有变量

    以下是一个使用闭包实现私有变量的例子: ```javascript function counter() { var count = 0; // 私有变量 return { increment: function() { count++; console.log(count); }, reset: function() { ...

    基于javascript 闭包基础分享

    文章中提到了两个例子:第一个例子中,通过一个循环来创建带有闭包的函数数组,但是由于JavaScript变量作用域和循环的作用,所有函数最终都只访问到了循环的最终值。第二个例子通过立即执行函数表达式(IIFE)来解决...

    javaScript 利用闭包模拟对象的私有属性

    JavaScript缺少块级作用域,没有private修饰符,但它具有函数作用域。作用域的好处是内部函数可以访问它们的外部函数的参数和变量(除了this和argument

    深入解析Javascript闭包的功能及实现方法

    JavaScript中的闭包是一种强大的特性,它允许函数访问和操作其外部作用域的变量,即使在其外部函数已经执行完毕后。闭包的实现基于JavaScript的作用域链和垃圾回收机制。 1. **闭包的概念** 闭包是一个拥有自身...

    如何在JavaScript对象中嵌入私有成员.doc

    在JavaScript中,创建私有成员通常是为了保护对象的内部状态,防止外部代码直接访问或修改。这在构建复杂的模块或类时尤其重要,...在设计复杂的JavaScript组件或库时,使用闭包来实现私有成员是一种常见的最佳实践。

    闭包javascript.pdf

    2. **模块模式**:使用闭包可以实现模块化编程,通过返回一个对象来暴露公共方法,同时隐藏内部实现细节。 3. **事件处理**:在事件驱动的编程模型中,闭包使得我们可以在事件发生时访问到事件触发时的上下文状态。 ...

    【JavaScript源代码】详解ES6实现类的私有变量的几种写法.docx

    ### JavaScript ES6 实现类的私有变量方法详解 #### 一、背景介绍 随着ECMAScript 2015(通常称为ES6)的引入,JavaScript语言经历了一次重大更新,提供了许多新特性和改进,其中包括对面向对象编程的支持增强。...

    基于JavaScript闭包的Web图片浏览控件的实现.pdf

    JavaScript闭包可以让开发者在函数内部访问外部变量,从而实现函数的重用。 2. JavaScript闭包应用场景 JavaScript闭包的主要应用场景包括: (1) 读取函数内部的变量:通过闭包,可以读取函数内部的变量,从而...

    JavaScript之私有属性,私有函数,函数实现对外不可见

    1. **闭包**:这是JavaScript中实现私有变量和私有函数最常见的方法。闭包是一种特殊的函数,它可以访问其自身、调用它的函数以及包含它的所有外部变量,即使在其定义的作用域之外也是如此。通过在函数内部定义变量...

Global site tag (gtag.js) - Google Analytics