I'm going through an online Solidity Tutorial, and it shows me this:
"Here's some template code provided by Metamask for how we can detect to see if the user has Metamask installed, and if not tell them they'll need to install it to use our app:"
window.addEventListener('load', function() {
// Checking if Web3 has been injected by the browser (Mist/MetaMask)
if (typeof web3 !== 'undefined') {
// Use Mist/MetaMask's provider
web3js = new Web3(web3.currentProvider);
} else {
// Handle the case where the user doesn't have web3. Probably
// show them a message telling them to install Metamask in
// order to use our app.
}
// Now you can start your app & access web3js freely:
startApp()
})
I don't understand what's happening between the statements 'if' and 'else'.
if (typeof web3 !== 'undefined')
If I'm correct, I think this part above checks to see if the object 'web3' isn't 'undefined'.
web3js = new Web3(web3.currentProvider);
This above I'm feeling really unsure with.
What I understand:
→ A new object is being created, by use of the object constructor 'Web3()'.
→ Which then is assigned to the variable 'web3js'.
→ 'web3' is a global Javascript object that Metamask injects their web3 provider into (which is one of infura's providers/servers).
What I need help with:
→ I need an explanation on what exactly the constructor function 'Web3()' does, or where I can find further details about it on. I can't seem to find it!
→ I don't fully understand the argument "web3.currentProvider" entered in the constructor function. I understand that it refers to the web3 provider Metamask uses, but I only know this because it said just that in the lesson. Where can I verify this?