当等于事件的对象发生更改时,事件值会不断变化

时间:2017-06-06 08:23:33

标签: javascript events event-handling

以下代码用于将事件映射到对象:

//shortened the function for better visibility
moveToolbar.on("graphic-move-stop", function (evt) {
    oldGraphicMove = evt.graphic;          
    oldGraphicMove.geometry.rings[0][0] = 42173;
    newGraphicMove = evt.graphic;
});

但是,当更改oldGraphicMove的值时,即使没有对事件本身进行任何更改,事件的值也会更改为模仿它。有什么方法可以阻止这种情况吗?

2 个答案:

答案 0 :(得分:0)

问题是oldGraphicMove指向与evt.graphic相同的对象。 你需要制作一份evt.graphic。

oldGraphicMove = JSON.parse(JSON.stringify(evt.graphic));应该可以解决问题。

答案 1 :(得分:0)

通过引用传递对象。要通过值传递,您可以使用匿名函数,或者需要克隆对象

@Override
public void onPause(){
    Intent i = getIntent();
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);

    //disable rencent app button
    ActivityManager activityManager = (ActivityManager) getApplicationContext()
            .getSystemService(Context.ACTIVITY_SERVICE);

    activityManager.moveTaskToFront(getTaskId(), 0);

    super.onPause();
}