浏览 2122 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-18
最后修改:2008-11-18
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? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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. 闭包最大的作用:把数据(外部函数的参数或局部变量)和其操作(内部函数)优雅地打包,生成一个移植性高的代码单元. |
|
返回顶楼 | |
发表时间:2008-11-20
最后修改: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引擎的优化能力. |
|
返回顶楼 | |