title: What happened when javascript engine interpret object literal?
body: <p>Recently I tried to create an object using object literal. And I need a property that use another property in the object. Like this</p>
  
  <pre><code>var object = {
      property1:'property1',
      property2:'property2 is from ' + this.property1
  };
  console.log(object.property2);// property2 is from undefined
  </code></pre>
  
  <p>The <code>this.property1</code> is <code>undefined</code> in the <code>property2</code>.</p>
  
  <p>I do know many ways to deal with this problem. My question is what happens behind the scenes? In other words, how javascript engine interpret object literal? I know "hoisting" happens in the function. Does "hoisting" happens in object literal?</p>
  
  <p>Thanks.</p>