您的位置:首页 > Web前端 > JavaScript

JavaScript基础知识3

2010-05-29 22:54 232 查看
隐藏成员变量

在函数体内定义的变量为局部变量,离开函数就挂掉了

在函数体内使用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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: