这是一个示例代码来说明这种情况。
在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,
};
}