javascript - 数组原型(prototype)将包含在数组列表中

标签 javascript node.js typescript tsc

我正在使用 typescript 在数组中添加新原型(prototype)。 我发现我可以在 for 循环中打印出原型(prototype)函数。

.ts

declare global {
  interface Array<T> {
    group(groupByKey: T): Array<T>;

  }
}

if (!Array.prototype.group) {
  Array.prototype.group= function<T>(this: T[], groupByKey: string): T[] {
    return group(this, groupByKey);
  };
}

控制台

var keys = Object.keys({a:1});
var str=""
    for (var k in keys) { 
        console.log(k)
    }

控制台输出为

0 
group

是否可以打印出数组中的值而不是原型(prototype)值。 但原型(prototype)也可以很好地运行。

最佳答案

您看到函数名称是因为它被定义为可枚举属性。您可以更改定义方式来解决此问题:

Object.defineProperty(Array.prototype, "group", {
  value: function<T>(this: T[], groupByKey: string): T[] {
    return group(this, groupByKey);
  },
  enumerable: false, // <-- important part
  configurable: true,
  writable: true
});

关于javascript - 数组原型(prototype)将包含在数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865941/

相关文章:

javascript - 使用 Django 和 Angular 的 CORS 预检请求

node.js - 在 Electron 项目中找不到模块

javascript - 以安全的方式为 nodeJS 转换流设置编码

node.js - 使用 multer 和 typescript : Property 'file' does not exist on type 'Request' . ts(2339)

javascript - 在函数中初始化的 typescript 继承属性被覆盖

javascript - 动态变量而不是 jquery 的方法

javascript - 使用 superagent-cache 缓存不同参数的 HTTP 响应

javascript - 如何在捆绑的 ReactJs 中发送值

javascript - Node.js + 向第三方服务发送 API 请求

angular - 使用@angular/cdk-experimental 在 Angular Material 2 表中使用虚拟滚动