неопределенный возврат из конструктора класса - JavaScript - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть один файл 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);

Я получаю "неопределенный" объект в выводе на печать ... это действительно сводит меня с ума, так как я уже потратил на это более 4 часов ... если кто-то может решитьэта загадка для меня тогда кружка пива на мне ..

Ура, алхимик

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Проблема в синтаксической привязке.Вам нужно создать экземпляр вашего BlockChain класса следующим образом:

const myBlockChain = new BlockChain();
console.log(myBlockChain.chain);

Проверьте MDN для получения дополнительной информации об этом.

0 голосов
/ 18 сентября 2018

Вы должны создать экземпляры таких классов, как

const Block = require("./block.js");
const BlockChain = require("./blockchain.js");
let block = new Block(...);
let blockChain = new BlockChain();
console.log(blockChain.chain);

. В качестве примера построения блокчейна с помощью JS вы можете перейти на сайт, подобный Этот из средних

Метод genesis() больше подходит для того, чтобы быть частью цепочки, поскольку это свойство цепочки, а не другого типа блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...