如何使用对象的括号符号和 属性 名称的字符串将 属性 添加到对象?
How to add property to object using bracket notation for object and string for property name?
我想用方括号来写对象名,这样我就可以通过参数引用它。很好,但是当我尝试编写 属性 名称而不将其作为参数传递时,我 运行 遇到了麻烦。重要的是 属性 名称只是写出来而不是作为参数传递。正确的语法是什么?
此示例显示了我尝试过的所有语法变体:
var foo = {};
bar('foo', 'cat');
function bar(object, prop) {
// foo[prop] = 5; // = 5. This works, but this isn't the method I want to use.
// [object]cat = 5; // = error
// [object].cat = 5; // = undefined
// [object]['cat'] = 5; // = undefined
// [object][cat] = 5; // = error
console.log('= ' + foo.cat);
}
由于 foo
被声明为全局变量,window 对象将在内部包含该对象。
因此,您可以执行以下操作:
window[object]['cat'] = 5;
var foo = {};
bar('foo');
console.log('= ' + foo.cat);
function bar(object) {
window[object]['cat'] = 5;
}
只需传递实际的对象引用:
var foo ={}
bar(foo, 'cat', 3);
console.log('updated foo', foo);
function bar(object, prop, val) {
object[prop] = val;
console.log('= ' + foo.cat);
}
function bar(object, prop) {
this[object] = this[object] || {};
this[object][prop] = 5;
console.log(foo.cat)
}
希望对您有所帮助!
我想用方括号来写对象名,这样我就可以通过参数引用它。很好,但是当我尝试编写 属性 名称而不将其作为参数传递时,我 运行 遇到了麻烦。重要的是 属性 名称只是写出来而不是作为参数传递。正确的语法是什么?
此示例显示了我尝试过的所有语法变体:
var foo = {};
bar('foo', 'cat');
function bar(object, prop) {
// foo[prop] = 5; // = 5. This works, but this isn't the method I want to use.
// [object]cat = 5; // = error
// [object].cat = 5; // = undefined
// [object]['cat'] = 5; // = undefined
// [object][cat] = 5; // = error
console.log('= ' + foo.cat);
}
由于 foo
被声明为全局变量,window 对象将在内部包含该对象。
因此,您可以执行以下操作:
window[object]['cat'] = 5;
var foo = {};
bar('foo');
console.log('= ' + foo.cat);
function bar(object) {
window[object]['cat'] = 5;
}
只需传递实际的对象引用:
var foo ={}
bar(foo, 'cat', 3);
console.log('updated foo', foo);
function bar(object, prop, val) {
object[prop] = val;
console.log('= ' + foo.cat);
}
function bar(object, prop) {
this[object] = this[object] || {};
this[object][prop] = 5;
console.log(foo.cat)
}
希望对您有所帮助!