我写了一个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