Я написал функцию javascript, чтобы расширить объект с помощью свойств, следующих за такими обозначениями: «a.b.c». Функция работает безупречно (до сих пор), но я не мог понять, оглядываясь на мой код, почему это сработало. Я предполагаю, что есть пояснение в javascript, возможно, цикл for? но мне было интересно, сможет ли кто-нибудь объяснить это мне должным образом.Почему эта функция расширяется?
var extend = (target, targetProperty, value) => {
var targetProperties = targetProperty.split(".");
for (var i = 0, len = targetProperties.length; i < len; i++) {
var part = targetProperties[i];
if (i == len - 1) {
target[part] = value;
break;
}
if (!target[part]) {
target[part] = {};
}
target = target[part];
}
}
var myObject = {myProperty: "Hello"};
console.log(myObject);
extend(myObject, "a.b.c", "World");
console.log(myObject);
Это довольно прямо вперед, я понимаю, что «цель» приходит в качестве ссылки, потому что это объект, часть, которую я не понимаю, как на линии target = target[part];
исходный объект передается в не полностью перезаписывается вновь созданным пустым объектом в этой строке target[part] = {};
.
Спасибо!
Я думаю, вы имеете в виду 'target = target [part]' – kmiyashiro