JavaScript:如何为函数设置属性?

标签 javascript unit-testing function properties mocking

我正在测试我的一个函数,我想测试是否使用该代码中的正确参数调用特定函数。

因此,我像这样覆盖了原始函数:

var oldSort = sort;
sort = function(array) {
    this.arrayToSort = array;
}

然后我执行它并检查属性 sort.arrayToSort 是否设置为我传入的值并重新分配原始函数:

sort(myArray);
deepEqual(myArray, sort.arrayToSort); 
sort = oldSort;

但是,我不能那样访问 sort.arrayToSort。如何设置函数的属性以实现这一点?现在,我在 sort 函数之上声明了一个变量并设置了它,但我宁愿将它作为函数的属性以保持其范围较小。这可能吗?

最佳答案

听起来你想要 arguments.callee,它指的是函数本身,而不是它绑定(bind)到的对象。

var oldSort = sort;
sort = function(array) {
    arguments.callee.arrayToSort = array;
}

关于JavaScript:如何为函数设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791522/

相关文章:

javascript - Durandal 为注册页面组合了多个 View

javascript - 使用 jquery 用 <span> 包装某些单词

reactjs - 我什么时候应该使用快照测试?

成员函数中的 C++ 线程

c - 在 main() 中声明的函数是否具有外部链接或无链接?

javascript - JQuery 自动完成未使用所选项目填充输入

javascript - 使用 famo.us RenderController 切换回来时表面顺序困惑

javascript - JavaScript 中的依赖注入(inject)

c++ - 在 g++ 下获取 stringstream >> my_double 以给出无限值或 NaN 的方法?

java - maxOccuringDigit() 函数的时间和空间复杂度是多少?