5

当从 call() 或 apply() 调用时,有没有办法获取函数的返回值?

我的场景:

我有一个与函数配合良好的apply()函数。在对象构造器上:

var someObject = new SomeObject({NameFunction: "MakeNames"});

在对象方法的循环中:

var name = "";
for (var i = 0; i < data.length; i++) {
    name = window[this.NameFunction].apply(null, [data[i]]);
}

MakeNames功能:

function MakeNames(data)
{
    return data.FirstName + " " + data.LastName;
}

该 varname保持为空原因apply不会从函数返回任何值。请注意,我确定该函数已被调用并且参数已成功传递。请不要告诉我name = MakeNames(data[i]);直接使用,因为很明显我不想要这个解决方案。

不管它是否是applycall或者任何 JavaScript 必须使它工作,如果有效的话。

我怎样才能做到这一点?

4

2 回答 2

13

的结果:

window[this.NameFunction.toString()].apply(null, [data[i]])

与以下内容完全相同

MakeNames(data[i])

因为唯一的区别是MakeNames函数中this的值,并且由于没有使用this,所以它没有任何区别。apply的使用不会改变函数是否返回值,或者值是什么。

无论您遇到什么问题,它都不在(部分)发布的代码中。

于 2013-05-22T13:08:11.770 回答
0

我没有在您的代码中看到在哪里data设置,或者在哪里data[i]将是具有属性FirstNameLastName. 尝试故障转移:

function MakeNames(data) {
    return (data.hasOwnProperty('FirstName')) ? data.FirstName + " " + data.LastName : 'John Doe';
}
于 2013-05-22T13:05:20.207 回答