这是什么类型的javascript数据类型?

时间:2020-05-05 10:22:37

标签: javascript arrays object data-structures

console.log写入此数据类型-

<key1 : value1 , key2 : value2>

语法与对象或数组都不相似。那么这是什么数据类型?

这是复制方法。

安装 bsv

const bsv = require("bsv");
console.log(bsv.PrivateKey.fromRandom())

从节点终端

> bsv = require("bsv");
> bsv.PrivateKey.fromRandom()

1 个答案:

答案 0 :(得分:2)

TL; DR

您看到的只是一个对象,特别是PrivateKey库中的bsv对象。 bsv库在过时的Node.js版本中由console.log登录时具有对象的自定义表示形式。

详细信息

我终于能够复制您的输出,是从过时的Node.js副本中获取的:

<PrivateKey: a909d298d55c8fa3afdb641eb46e90cebad4f2d3f5ee0d4149e3bac16f12ee5b, network: livenet>

如上所述,它只是bsv库中的PrivateKey对象。您看到的原因是bsv库使用了Node.js早已弃用的功能:Node.js的console.log用于查找inspect方法如果存在,则将调用该方法以获取要记录的对象的字符串表示形式。 bsvinspect上有一个PrivateKey方法,当前位于line 372(当然,该行号会随着时间而变化)。

您只会在(略)过时的Node.js副本中看到此内容。我偶然发现了该解决方案,因为我在使用v10.20.1的CodeSandbox上进行了尝试。此有用的消息就在CodeSandbox中的输出之后:

(节点:887)[DEP0079]弃用警告:不建议通过.inspect()对对象进行自定义检查功能

此后,我通过安装Node.js v10.20.1在本地复制了该文件。

使用up-to-date copy of Node.js(在我撰写本文时,v12.16.3是当前的LTS,v14.1.0是当前的版本),Node.js不再寻找或使用inspect方法,因此您将看到Node.js的标准对象输出,如下所示:

PrivateKey {
  bn: BN {
    negative: 0,
    words: [
      66428877, 21624768,
      45502785, 19604474,
      35981886, 10091365,
      29744843, 24740201,
      15504496,  1628002,
             0
    ],
    length: 10,
    red: null
  },
  compressed: true,
  network: Network {
    name: 'livenet',
    alias: 'mainnet',
    pubkeyhash: 0,
    privatekey: 128,
    scripthash: 5,
    xpubkey: 76067358,
    xprivkey: 76066276,
    cashAddrPrefix: 'bitcoincash',
    cashAddrPrefixArray: [
      2,  9, 20, 3, 15,
      9, 14,  3, 1, 19,
      8
    ],
    networkMagic: <Buffer e3 e1 f3 e8>,
    port: 8333,
    dnsSeeds: [ 'seed.bitcoinsv.org', 'seed.bitcoinunlimited.info' ]
  },
  publicKey: [Getter]
}

因此,再次:它只是一个对象,由bsv库以非标准格式显示。