Javascript 在原型函数中引用此

Javascript 在原型函数中引用此,javascript,prototype,prototype-programming,Javascript,Prototype,Prototype Programming,我使用此表单隐藏类的私有函数: 但这并不是我所期望的 function Person(){} Person.prototype = (function(){ console.log(this); // --> window, always function privateFunc(from){ // private func always loses 'this' even if publicFunc had it console.lo

我使用此表单隐藏类的私有函数: 但这并不是我所期望的

function Person(){}

Person.prototype = (function(){

    console.log(this); // --> window, always

    function privateFunc(from){
        // private func always loses 'this' even if publicFunc had it
        console.log('private', from, this);
    }

    function publicFunc(from){
        // publicFunc has this only when called directly, not by timeout
        console.log('public', from, this);  
        privateFunc(from);
    }

    return {
        PublicFunc: publicFunc
    };

})/*.bind(???).*/();


var man = new Person();
man.PublicFunc('direct');
window.setTimeout(man.PublicFunc, 1, 'timeout');
我可以通过手动绑定函数来解决此问题,如下所示:

privateFunc.call(this, from);
window.setTimeout(man.PublicFunc.bind(man), 1, 'timeout');

但是我不喜欢用call调用每个私有函数。还有其他方法吗?

在调用中设置:setTimeoutfunction'timeout'{man.PublicFunc},1.@MDeSchaepmeester让我们忽略函数是对象的事实,并关注Person.prototype={PublicFunc:function publicFuncfrom{…};可能重复的旁注:我不需要一个解释,为什么会发生重复的建议。我需要一种无需手动调用每个函数就可以捕获的方法。我需要一个不同的方法!?