我正在学习Javascript并遇到apply
函数。我以为我可以将apply
值分配给变量,然后打印出变量的内容。但是,我似乎未定义,我不确定为什么会发生这种情况......
var thisObj = {
fullName: 'test',
setName: function(firstName, lastName) {
this.fullName = firstName + " " + lastName
}
}
function getInput(firstName, lastName, callBack, createdObj) {
return callBack.apply(createdObj, [firstName, lastName]);
}
var thisObjectInstantiated = getInput("Michael", "Jackson", thisObj.setName, thisObj);
console.log(thisObjectInstantiated); // Why is this undefined?
我也注意到如果我改变印刷品来做这样的事情,我的名字就被正确定义了。
var thisObjectInstantiated = getInput("Michael", "Jackson", thisObj.setName, thisObj);
console.log(thisObj.fullName); // This is defined properly!
为什么我只能将申请结果存储在thisObjectInstantiated
变量中?感谢。
答案 0 :(得分:0)
您正在调用getInput函数,即调用setName函数,该函数不会返回任何内容,因此thisObjectInstantiated正在接收......没有!
你可能想要改变你的代码:
var thisObj = {
fullName: 'test',
setName: function(firstName, lastName) {
this.fullName = firstName + " " + lastName;
return this;
}
}
答案 1 :(得分:0)
您正在分配函数调用的结果,在您的代码中,不返回任何值。这就是你得到Stream
的原因。
执行的代码没有返回值,因此JavaScript的默认返回值为undefined