Hey.
I have a lot of questions about the Browser Object Model. Incomprehensible more than clear. I want to understand the structure of BOM.
Question 1: If you take a document, in the <body></body> element there is only ONE paragraph element (for simplicity) <p id="1"> </p> in my document with the id attribute = "1", then By analyzing the browser of my document, the browser IN MEMORY builds a BOM tree, where the DOM is included. My item becomes an object p . The p object deals with a SPECIFIC place in the BOM - window.document.lastChild(попал на объект html).lastChile(попал на объект body).firstChild(попал на объект p) . Question: WHERE PROTOTYPE CHAINS OF PARAGRAPH OF PARAGRAPHE - HTMLParagraphElement, HTMLElement, Element, Node ... are you a parent or a neighbor? " ( document.getElementById("1").__proto__.parentNode; ), then throws an Uncaught TypeError: Illegal invocation .
Question 2: There was an idea that maybe these prototype objects lie in the root of the window object (for the reason that all the variables created by the programmer, objects, prototype objects, and functions LIE IN THE ROOT of the window object) climbed and looked. I came across some strange constructor functions that have the same name as the prototype + they have the __proto__ property and the constructor SIMULTANEOUSLY. How can a constructor function have a prototype? I thought that the prototype can only be a normal object. 
Question 3: It turned out that the window object has a prototype WITH THE SAME NAME and even further prototypes go. And where are they? . I thought the window object is the topmost one. In general, some kind of confusion - "something in something inside something." Please help me get this mess.
