修改整个对象时,嵌套 JSON 对象的 JavaScript 导航不起作用
Javascript navigation to nested JSON object not working when modifying whole object
我正在尝试在语法上遵循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;
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值