在javascript中从另一个访问一个函数的参数

时间:2010-05-11 13:23:01

标签: javascript

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()

时未定义

从根本上说,我做错了什么。但不知道在哪里......

感谢您的帮助......

1 个答案:

答案 0 :(得分:1)

在使用模块模式时,你会混合一些东西。 this.objthis.ratethis.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();