首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用函数截取JS代理中的排序函数?

问如何使用函数截取JS代理中的排序函数?
EN

Stack Overflow用户
提问于 2021-10-21 06:47:02
回答 1查看 47关注 0票数 0

我之前的相关问题:How do I intercept sort function within a JS proxy?

给定代理:

代码语言:javascript
复制
function sort(customSort) {
  /* Write logs */
  console.log("Intercepted sort")
  return this.sort(customSort);
}
function get( target, prop, receiver ) {
  if (prop === 'sort') {
    /* How to capture custom sort?*/
    return sort.bind(target);
  }
  console.log("Intercepted get")
  return Reflect.get( target, prop, receiver );
}
var handler = {
  get
};
var proxy = new Proxy( new Array(...[7,1,2,3,4,5]), handler );

但现在我添加了一个自定义排序函数:

代码语言:javascript
复制
console.log(proxy.sort((a,b) => .... /* e.g., a-b */))

我不明白如何捕获函数并将其传递给代理排序函数。我尝试过在get函数中捕获不同的参数,但找不到正确的参数。

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 10:38:14

解决方案类似于:How to sort only part of array? between given indexes

我返回一个访问argument[0]的函数

代码语言:javascript
复制
function sort(customSort) {
  /* Write logs */
  console.log("Intercepted sort")
  return this.sort(customSort);
}
function get( target, prop, receiver ) {
  if (prop === 'sort') {
    /* How to capture custom sort?*/
     return function(customSort) => {
       return this.sort(customSort || ((a,b) => a-b) )
     }
  }
  console.log("Intercepted get")
  return Reflect.get( target, prop, receiver );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69657122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档