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