Javascript没有正确返回?

时间:2018-03-22 04:56:37

标签: javascript apply

我正在学习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变量中?感谢。

2 个答案:

答案 0 :(得分:0)

您正在调用getInput函数,即调用setName函数,该函数不会返回任何内容,因此thisObjectInstantiated正在接收......没有!

你可能想要改变你的代码:

var thisObj = {
fullName: 'test',
setName: function(firstName, lastName) {
     this.fullName = firstName + " " + lastName;
     return this;
   }
 }

答案 1 :(得分:0)

您正在分配函数调用的结果,在您的代码中,不返回任何值。这就是你得到Stream的原因。

执行的代码没有返回值,因此JavaScript的默认返回值为undefined