OOP. Calling methods from within methods

前端 未结 4 2012
一生所求
一生所求 2021-01-19 19:30

How do I call class methods from functions within the class? My code is:

var myExtension = {

    init: function() {
        // Call onPageLoad
    },  

            


        
4条回答
  •  终归单人心
    2021-01-19 20:15

    Have you considered a closure, instead?

    For example:

    var myExtension = ( function() {
    
        var me = {};
    
        var private_thingy = "abcDEFG123";
    
    
        var onPageLoad = function() {
            // do page loading business
            alert( private_thingy );
        }
        me.onPageLoad = onPageLoad;
    
    
        var init = function() {
            onPageLoad();
        }
        me.init = init;
    
    
        return me;
    
    })();
    
    ///////////////
    
    myExtension.private_thingy = "DIDDLED!";
    // will NOT modify the private_thingy declared within the closure
    
    myExtension.init(); // will work fine.
    

    Anything you define within the closure is available within the closure at all times, and when implemented carefully will yield private members not accessible to users of the object. Only members that you explicitly export - e.g., the me.xxx = xxx lines - are publicly available.

    Thus, when onPageLoad executes, "abcDEFG123" will be displayed in the alert, not "DIDDLED!". Users of the object can modify properties using the dot operator until the cows come home; what's not made public by the closure, however, can never be modified: even if the user reassigns a function on the public interface, calls to the private function from within the closure will always point to the function defined within the closure.

    The important part: it unties you from the constant use of this (unless you really want to use it; save your fingers for more important typing!).

    Give it a shot. And have a look at Javascript: The Good Parts by Crockford.

提交回复
热议问题