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{…};可能重复的旁注:我不需要一个解释,为什么会发生重复的建议。我需要一种无需手动调用每个函数就可以捕获的方法。我需要一个不同的方法!?