这是我的代码
class ToolDispatcherBlueprint extends Destroyable {
_tool;
_dispatchRegister = null;
_state = {
selectedTool: null,
selectedElement: null,
hoveredElement: null,
keyboardKeyDown: null,
keyboardKeyUp: null,
mousedown: false,
mouseup: true,
mousemove: false
};
constructor(paper) {
super();
this._tool = new paper.Tool;
let dispatchOnKeyDown = (event) => {
this._state.keyboardKeyDown = event;
this.dispatch(event);
};
let dispatchOnKeyUp = (event) => {
this._state.keyboardKeyUp = event;
this.dispatch(event);
};
let dispatchOnMouseDown = (event) => {
this._state.mouseup = false;
this._state.mousemove = false;
this._state.mousedown = true;
console.log("dispatcher", this._state.mousedown, this._state);
this.dispatch(event);
...
问题是我得到一个日志,表明mousedown同时为true和false。我希望它表示true,_state
的属性也表示true
即。 _state.mousedown: true
答案 0 :(得分:2)
它不是你的想法。打印时,true
会通过。但该对象由开发工具引用。它仅在您展开对象时进行评估,到那时,您的mousedown事件已结束。
答案 1 :(得分:0)
值肯定不会同时变化。 console.log(this._state)
从稍后输出对象的一些快照。
永远不要依赖于对象在控制台中的显示方式。只能信任原始值。如果需要输出对象的快照,请逐个输出其属性或将其转换为基元:
console.log(JSON.stringify(this._state, null, 2))