我有一个文件是block.js:
class Block{
constructor(timeStamp, lastBlockHash, thisBlockData, thisBlockHash){
this.timeStamp = timeStamp;
this.lastBlockHash = lastBlockHash;
this.thisBlockData = thisBlockData;
this.thisBlockHash = thisBlockHash;
}
static genesis(){
return new this(Date.now(), "---", "genesis block", "hash of the genesis");
}
}
我还有另一个文件blockchain.js,其中包含以下内容:
const Block = require('./block');
class BlockChain{
constructor() {
this.chain = BlockInstance.genesis();
}
}
我在做一个测试文件:
const Block = require("./block.js");
const BlockChain = require("./blockchain.js");
console.log(BlockChain.chain);
我在打印输出中得到一个“未定义”的对象。这真的让我发疯了,因为我已经花了四个多小时。 如果有人可以为我解决这个谜团,那么我身上就会有一轮啤酒。
干杯, 炼金术士
答案 0 :(得分:1)
您应该实例化类似的类
const Block = require("./block.js");
const BlockChain = require("./blockchain.js");
let block = new Block(...);
let blockChain = new BlockChain();
console.log(blockChain.chain);
有关使用JS构建区块链的示例,您可能需要关注This one from medium之类的网站
genesis()
方法更适合成为链的一部分,因为那是链的属性,而不是其他类型的块。
答案 1 :(得分:0)
问题在于语法绑定。您需要像这样实例化BlockChain
类:
const myBlockChain = new BlockChain();
console.log(myBlockChain.chain);
查看MDN以获得更多信息。