var vehiclePage = (function(){
// defined these 3 public variable. to share between zoomNoShowFee & submitVehicle
this.obj;
this.rate;
this.idx;
var setPara = function(o,t,i){
this.obj = o;
this.rate = t;
this.idx = i;
}
return {
zoomNoShowFee : function(o,t,i){
// this is existing function. I need to access o,t,i inside submitVehicle function.
setPara(o,t,i); // wrote this private function to set values
},
submitVehicle : function(){
// here I need to access zommNoShowFee's parameter
alert(this.rate);
}
} // return
})();
vehiclePage.zoomNoShowFee(null,5,3);
vehiclePage.submitVehicle(); // getting undefined
zoomNoShowFee已经存在。其他一些开发人员写了这个。我想使用传递给submitVehicle里面的zoomNoShowFee参数的值。
为此,我在顶部声明了3个公共变量,并尝试使用setPara私有函数存储值。这样我就可以访问submitVehicle函数中的那些公共变量。
但是在调用vehhiclePage.submitVehilce()
时未定义从根本上说,我做错了什么。但不知道在哪里......
感谢您的帮助......
答案 0 :(得分:1)
在使用模块模式时,你会混合一些东西。 this.obj
,this.rate
和this.idx
是错误的this
对象的属性。实际上,它们是全局对象的属性,您可以对此进行验证:
vehiclePage.zoomNoShowFee(null,5,3);
alert(rate); // alerts '5'
因此,您必须将您的值存储在其他位置。但这很简单:只使用常规变量而不是属性,你就可以了:
var vehiclePage = (function(){
var obj, rate, idx;
var setPara = function(o,t,i){
obj = o;
rate = t;
idx = i;
}
return {
zoomNoShowFee : function(o,t,i){
setPara(o,t,i);
},
submitVehicle : function(){
alert(rate);
}
} // return
})();
vehiclePage.zoomNoShowFee(null,5,3);
vehiclePage.submitVehicle();