我正在测试我的一个函数,我想测试是否使用该代码中的正确参数调用特定函数。
出于这个原因,我覆盖了这样的原始函数:
var oldSort = sort;
sort = function(array) {
this.arrayToSort = array;
}
然后我执行它并检查属性sort.arrayToSort
是否设置为我传入的值并重新分配原始函数:
sort(myArray);
deepEqual(myArray, sort.arrayToSort);
sort = oldSort;
但是,我无法像这样访问sort.arrayToSort
。如何设置函数的属性以使其成为可能?现在,我正在声明一个变量高于sort函数并设置它,但我宁愿将它作为函数的属性来保持其范围较小。这可能吗?
答案 0 :(得分:2)
听起来像你想要的arguments.callee
,它指的是函数本身,而不是它所绑定的对象。
var oldSort = sort;
sort = function(array) {
arguments.callee.arrayToSort = array;
}
答案 1 :(得分:0)
mysort = new sort(array);
alert(mysort.arrayToSort);
您可以使用原始排序中的自定义比较器功能。像这样
array.sort(sortfunction)
function sortfunction(a, b){
//Compare "a" and "b" in some fashion, and return -1, 0, or 1
}