繁体   English   中英

JavaScript中的复杂对象

[英]Complex objects in javascript

我在摆弄一个名为bcoin的节点库。 运行以下代码:

  chain.on('block', function(block) {
    console.log('Connected block to blockchain:');
    block.txs.forEach(function(t) {
      t.inputs.forEach(function(i) {
        console.log(typeof i, i);
        console.log(JSON.stringify(i));
      });
    });
  });

这是我得到的答复:

Connected block to blockchain:
object { type: 'coinbase',
  subtype: null,
  address: null,
  script: <Script: 486604799 676>,
  witness: <Witness: >,
  redeem: null,
  sequence: 4294967295,
  prevout: <Outpoint: 0000000000000000000000000000000000000000000000000000000000000000/4294967295>,
  coin: null }
{"prevout":{"hash":"0000000000000000000000000000000000000000000000000000000000000000","index":4294967295},"script":"04ffff001d02a402","witness":"00","sequence":4294967295,"address":null}

请注意,即使在打印i时显示了例如属性type ,当我们对对象进行JSON.stringify时,该属性也不存在。 如果我尝试console.log(i.type)我会得到undefined

那怎么可能? 调试对象发生了什么的好方法是什么?

JSON.stringify将仅包含不是函数的可枚举属性。

因此,如果您定义一个属性并将其设置为不可枚举,则它不会成为JSON字符串的一部分。

 var obj = { a: 'test' }; // Non-enumerable property Object.defineProperty(obj, 'type', { enumerable: false, value: 'Test' }); // Get property Object.defineProperty(obj, 'type2', { get: function(){ return 'Test 2' } }); console.log(JSON.stringify(obj), obj); console.log(obj.type, obj.type2) 

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM