Javascript专用方法调用方返回未定义的

Javascript专用方法调用方返回未定义的,javascript,oop,Javascript,Oop,我试图定义一个方法。,这样我就可以调用在原型中定义的私有方法,如 我的功能非常强大,所以我只选择了一个案例 XXXXX.prototype = (function(){ var privateMethod =function() { return "success"; } //public method here return { //returns a prototyp constructor: XXXXX,

我试图定义一个方法
,这样我就可以调用在原型中定义的私有方法,如

我的功能非常强大,所以我只选择了一个案例

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);
            }
        }
    };
})()
问题:
为什么我的
\uuu
没有按预期工作?我错在哪里?

您忘记在
乐趣中添加
返回
。应用

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

添加
后返回
(请参见
实际问题是什么?@thefourtheye请检查我更新的问题,谢谢!我认为覆盖原型不是一个好主意,这可能会导致很多问题。此外,您的构造函数应该给您一个错误,XXXXX函数在您分配它时仍然未定义。也许最好对原型的定义有一个更清楚的了解很抱歉,我错了,从来没有见过像这样的实现来做你想做的事情,别介意。我会关注一下:)
{ subject: '123' }
123
{ subject: '123' }
undefined
{ subject: '123' }
123
{ subject: '123' }
123