Javascript 私有方法专用调用者 returns 未定义

Javascript private method dedicated caller returns undefined

我正在尝试定义一个方法 _ 以便我可以调用我的原型中定义的私有方法,例如 http://webreflection.blogspot.hk/2008/04/natural-javascript-private-methods.html

我的功能比较大,这里就挑一个案例吧

XXXXX.prototype = (function(){

    var  privateMethod =function() {
       return "success";
    }

    //public method here
    return { //returns a prototyp
        constructor: XXXXX,

        pubMethod: function() {
            console.log("normal call",privateMethod.apply(this));//success
            console.log("_ call",this._(privateMethod)());//undefined
        },

        //private method dedicated caller
        _: function(fun) {
            var that = this;
            return function() {
                fun.apply(that, arguments);
            }
        }
    };
})()

问题:

为什么我的 _ 没有按预期工作?我哪里错了?

您忘记在 fun.apply

上添加 return
function XXXXX(){}
XXXXX.prototype = (function(){    
    var  buildDimWhere =function() { return this.subject; }    
    return { 
        constructor: XXXXX,    
        pubMethod: function() {
            console.log(buildDimWhere.apply(this)) 
            console.log(this._(buildDimWhere)()) 
        },
        _: function(fun) {
            var that = this;
            return function() {
                return fun.apply(that, arguments); // <--- HERE!
            }
        }
    };
})()

// test code:
y = new XXXXX();
y.subject = '123'
y.pubMethod();

没有 return 它给出:

{ subject: '123' }
123
{ subject: '123' }
undefined

添加return后(见<-- HERE!部分),输出:

{ subject: '123' }
123
{ subject: '123' }
123