在我的应用程序中,我必须为其他人构建一个独立的lib,所以我创建了这样的新对象:
function MyService(){
//xxxxxxx...
}
MyService.prototype.login=function(name,pass){
//here
}
MyService.prototype.LoadDataFromServer(){
//use the ajax get data from server,when get the data,I will eval them :
var data=parseData(request.responseText);
//now,the parseData is a private method which should not be exposed to the user,but it need the reference of the MyService object(this),so I have to use the following code:
var this_ref=this;
function parseData(res){
this_ref.xxxx=.....
}
}
MyService.prototype.parseData=function(res){
this.xxxxx=....
}
这将使paresData函数成为用户。
现在,我想知道哪个更好?
答案 0 :(得分:2)
如果你想要私有数据/方法,你应该更好地使用闭包。
var MyService = (function() {
// define "private" methods
var _login = function(name, pass) {
...
},
_loadDataFromServer = function() {
....
},
_parseData = function(res) {
...
};
//return "public" methods
return {
login: _login,
loadDataFromServer: _loadDataFromServer
};
}()); // execute function immediately
MyService
现在只有两个“公共”功能,login
和loadDataFromServer
您仍然可以从公共功能访问“私有”功能,但您无法直接访问任何公共功能“私有”方法MyService._login('test','pass');
会失败,但MyService.login('test','pass');
会有效。请参阅此示例http://jsfiddle.net/EXrDW/
答案 1 :(得分:0)
没有“更好”的答案,只有你觉得更舒服。很多人似乎采用的是将下划线放在用户不应访问的方法前面的做法。