能够在创建对象属性之前记录它

时间:2017-07-17 13:47:11

标签: javascript object order-of-execution

这是一个示例代码来说明这种情况。 在chrome dev工具中,像这样的代码不会记录undefined数据,如果我在debugger;之前添加alert()console.log(),那么它会记录undefined正如所料。 如何理解和解释这种奇怪的行为?

class aClass {
  constructor(){

  }
  aMethod(){
   console.log(this.anObject.theProperty);
   this.anObject.theProperty = 'set';
  }
  anotherMethod(){
    this.anObject = {
      someProperty:'someData'
    };
  }
}

var instance = new aClass;
instance.anotherMethod();    
instance.aMethod();

下面是创建此行为的实际代码的简化片段,我没有包含this引用的类。 我找不到重现行为的方法,但是你可以给我建议吗?

谢谢。

    updateHandlesExternally(divWidth,divHeight,parentId){

            console.log('DW','DH',this.eventStore.dw,this.eventStore.dh,'NORW','NORH',norW,norH)

            var norW = divWidth*this.stateStore.s;
            var norH = divHeight*this.stateStore.s;

            this.eventStore.dw  = norW - this.stateStore.bb.width;
            this.eventStore.dh  = norH - this.stateStore.bb.height;

    }

    init(){

        var obj = this;

        obj.stateStore ={
          s:1,
          bb:{
            width:obj.bb.width,
            height:obj.bb.height,
            x:obj.bb.x,
            y:obj.bb.y,
            ox:obj.bb.x + obj.bb.width/2,
            oy:obj.bb.y + obj.bb.height/2
          }
        }
        obj.eventStore = {
            lastAngle : 0,
        };

    } 

0 个答案:

没有答案