2
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 is already existing. Some other fellow developer wrote this. I want to use the values passed into zoomNoShowFee parameters inside submitVehicle.

For that I declared 3 public variables at the top and trying to store the values using setPara private function. so that I can access those public variables inside submitVehicle function.

But getting undefined when calling vehhiclePage.submitVehilce()

Fundamentally, I doing something wrong. But don't know where...

Thanks for any help...

1 Answer 1

1

In your use of the module pattern, you're mixing a few things. this.obj, this.rate and this.idx are properties of the wrong this object. In fact, they are properties of the global object, and you can verify this:

vehiclePage.zoomNoShowFee(null,5,3);
alert(rate); // alerts '5'

So, you have to store your values somewhere else. It's quite easy, though : just use regular variables instead of properties and you're good to go :

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();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.