希望将属性的名称作为函数中的参数传递。在Javascript中
我有以下Javascript代码希望将属性的名称作为函数中的参数传递。在Javascript中,javascript,Javascript,我有以下Javascript代码 var obj1 = {bob: 0, fred: 0}; var obj2 = {bob: 1, bill: 1}; function testTheory(attr) { obj1.attr += 1; obj2.attr += 2; } testTheory("bob"); 我有非常类似的PHP代码,可以很好地工作。testTheory函数应采用字符串“bob”,并尝试将其用作obj1和obj2上的属性。有没有办法用Javascrip
var obj1 = {bob: 0, fred: 0};
var obj2 = {bob: 1, bill: 1};
function testTheory(attr) {
obj1.attr += 1;
obj2.attr += 2;
}
testTheory("bob");
我有非常类似的PHP代码,可以很好地工作。testTheory函数应采用字符串“bob”,并尝试将其用作obj1和obj2上的属性。有没有办法用Javascript实现这一点?问题的目的是,我有多个具有类似属性列表的对象,我需要合计一些属性。与其使用单独的函数来合计“bob”属性和“bill”属性,不如简单地传递我要合计的属性的名称,并让它将它们相加。我很容易在PHP中使用它,但我正在努力使用Javascript。你可以这样做,Javascript的语法只是有点不同
function testTheory(attr) {
obj1[attr] += 1;
obj2[attr] += 2;
}
在属性周围使用方括号。
(旁注:这也适用于对象上的函数。)
可以这样做,javascript中的语法只是略有不同
function testTheory(attr) {
obj1[attr] += 1;
obj2[attr] += 2;
}
在属性周围使用方括号。
(旁注:这也适用于对象上的函数。)
试试这个:
var obj1 = {bob: 0, fred: 0};
var obj2 = {bob: 1, bill: 1};
function testTheory(attr) {
obj1[attr] += 1;
obj2[attr] += 2;
}
testTheory("bob");
试试这个:
var obj1 = {bob: 0, fred: 0};
var obj2 = {bob: 1, bill: 1};
function testTheory(attr) {
obj1[attr] += 1;
obj2[attr] += 2;
}
testTheory("bob");
简短回答:使用
obj[attr]
而不是obj.attr
说明:
在这种情况下,JavaScript将使用attr
检查实际的attr
属性
假设我们有一个obj:
var obj = {name:"Bob", age:100, attr:"I am Bob"}
和两个功能:
function getAttribute1(attr){ return obj.attr; }
function getAttribute2(attr){ return obj[attr]; }
getAttribute1(“name”)
将返回“我是鲍勃”
getAttribute2(“name”)
将返回“”Bob”简短回答:使用obj[attr]
而不是obj.attr
说明:
在这种情况下,JavaScript将使用attr
检查实际的attr
属性
假设我们有一个obj:
var obj = {name:"Bob", age:100, attr:"I am Bob"}
和两个功能:
function getAttribute1(attr){ return obj.attr; }
function getAttribute2(attr){ return obj[attr]; }
getAttribute1(“name”)
将返回“我是鲍勃”
getAttribute2(“name”)
将返回“”Bob”函数应该是这样的
function testTheory(attr) {
obj1[attr] += 1;
obj2[attr] += 2;
}
函数应该是这样的
function testTheory(attr) {
obj1[attr] += 1;
obj2[attr] += 2;
}
obj1[attr]
和obj2[attr]
(括号符号)-哇。。。真是太快了,伙计们。谢谢出于某种原因,我一直在思考点符号,而没有记住可以像数组一样处理对象。只要计时器允许,我会在下面选择一个答案。“不要记住你可以像数组一样对待对象”,这也不是你应该考虑的。能够使用括号表示法访问属性是对象的特征,而不是数组的特征。数组是对象。事实上,只有使用括号表示法才能访问数组,这是由于点表示法的求值规则foo.0
是无效的,因此您必须使用foo[0]
。foo
是对象还是数组并不重要。obj1[attr]
和obj2[attr]
(括号表示法)-哇。。。真是太快了,伙计们。谢谢出于某种原因,我一直在思考点符号,而没有记住可以像数组一样处理对象。只要计时器允许,我会在下面选择一个答案。“不要记住你可以像数组一样对待对象”,这也不是你应该考虑的。能够使用括号表示法访问属性是对象的特征,而不是数组的特征。数组是对象。事实上,只有使用括号表示法才能访问数组,这是由于点表示法的求值规则foo.0
是无效的,因此您必须使用foo[0]
。foo
是对象还是数组并不重要。