JavaScript基础知识3
2010-05-29 22:54
232 查看
隐藏成员变量
在函数体内定义的变量为局部变量,离开函数就挂掉了
在函数体内使用this.成员变量名,则为window对象级变量,即全局变量。
这里有一个常见问题,即在对象中有一个this.firstname变量,这个firstname就是window级的全局变量。而如果使用不慎的话被中途修改,那就悲剧了。
所以要想隐藏成员变量,有2种方法
1.把变量的作用域限制在function级别上
2.可以使用prototype 的bind方法
方法1:
故需要这样隐藏成员变量,向外只暴露get、set函数
方法2:
在函数体内定义的变量为局部变量,离开函数就挂掉了
在函数体内使用this.成员变量名,则为window对象级变量,即全局变量。
这里有一个常见问题,即在对象中有一个this.firstname变量,这个firstname就是window级的全局变量。而如果使用不慎的话被中途修改,那就悲剧了。
所以要想隐藏成员变量,有2种方法
1.把变量的作用域限制在function级别上
2.可以使用prototype 的bind方法
方法1:
故需要这样隐藏成员变量,向外只暴露get、set函数
function testClass(name){ var _firstname=name; return { getname : function() { return _firstname; } } } var obj=new testClass("testName"); alert(obj.getname());
方法2:
var obj = { name: 'A nice demo', fx: function() { alert(this.name); } }; this.name = 'I am such a beautiful window!';//这里修改了name值,如果不用bind的话,将显示'I am such a .....' var fx2 = obj.fx.bind(obj);//如果这里做bind的话,将显示函数内部的name值。 所以建议大家,在使用对象封装成员时,如果使用window级变量做成员变量,则在使用时用bind,来避免使用的值可能被其它全局变量修改 obj.fx();
相关文章推荐
- 【javaScript】基础知识
- Javascript基础知识一
- javaScript基础知识
- Javascript学习1-基础知识
- 一些core javascript的基础知识
- JavaScript基础知识逐步理解。
- javascript基础知识(2)—— for语句的详解
- javascript中BOM基础知识总结
- JavaScript 你可能会忘记的基础知识 (1)基本类型
- javascript DOM 操作基础知识小结
- javascript之正则表达式基础知识小结
- javascript之正则表达式基础知识小结
- JavaScript简介及基础知识(1)
- 【知识整理】javascript基础语法总结(5)——数组
- HTML之JavaScript基础知识
- 【知识整理】javascript基础语法总结(1)——变量和数据类型
- Javascript基础知识
- javascript语句基础知识学习【javascript高级程序设计】
- javascript的一些基础知识(2)
- javascript基础知识(字符串)