我有这段代码:
function Const(val)
{
this.value = val;
this.meth = function()
{
var self = this;
function rfunc()
{
console.log(self);
}
rfunc()
}
}
var obj = new Const("test");
obj.meth();
结果是:
Const {value:“test”};
但是当我尝试这段代码时:
function Const(val)
{
this.value = val;
this.meth = function(callback)
{
var self = this;
callback();
}
}
var obj = new Const("test");
obj.meth(function(){
console.log(self);
});
结果是:
窗口对象。
我希望结果就像第一个例子。为什么会这样?
我知道当我将代码更改为:
function Const(val)
{
this.value = val;
this.meth = function(callback)
{
//var self = this;
callback.call(this);
}
}
var obj = new Const("test");
obj.meth(function(){
console.log(this);
});
然后结果就像第一个例子......