修改整个对象时,嵌套 JSON 对象的 JavaScript 导航不起作用

Javascript navigation to nested JSON object not working when modifying whole object

本文关键字:对象 JavaScript 导航 不起作用 JSON 修改 嵌套      更新时间:2023-09-26

我正在尝试在语法上遵循JSON对象内的路径,并将该对象替换为空白对象。

我正在使用此方法到达所需的对象,并且可以验证对象是否已到达。

$scope.path = "countries.canada.territories.yukon";
$scope.remove = function () {
    var pathInArrayForm = $scope.path.split('.');
    currentObject = $scope.countries;
    for (var i = 0; i < pathInArrayForm.length; i++){
        currentObject = currentObject[pathInArrayForm[i]];
    }
    currentObject.capital = "Montreal";
}

但是,当我尝试用空白对象替换对象时,通过

currentObject = {};

什么也没发生。它不会改变任何东西!当我使用:

currentObject.capital = "Montreal"

它有效,但是如果我只是使用普通对象,则不会发生任何事情。

请参阅我的 JSFiddle:http://jsfiddle.net/ay1wpr5L/2/

我的问题是,如何用空白{}替换嵌套在其他 JSON 对象中的对象?

对象不是通过 JS 中的引用传递的。在关于SO的另一个问题中阅读有关该主题的更多信息。我看到的最好的答案是亚历山大·瓦尔维克(Alexander Varwijk),他说:

如果你熟悉指针,这是一个你可以采取的类比。 你实际上是在传递一个指针,所以obj.someProperty会 取消对该属性的引用并实际覆盖它,而只是 覆盖 obj 将杀死指针而不会覆盖 对象。

要解决您的问题,只需声明currentObject这样的$scope.countries $scope.countries = currentObject;