我一直在使用Javascript中的方括号表示法来创建和调用关联数组。如何在点符号中使用变量,如方括号表示法
在本例中,我明白方括号表示法允许您使用变量来调用数组中的某个对象。
你会如何在点符号中做这样的事情?
var item = {};
item['1'] = 'pen';
var x = 1;
console.log(item[x]); // console will show 'pen'
我一直在使用Javascript中的方括号表示法来创建和调用关联数组。如何在点符号中使用变量,如方括号表示法
在本例中,我明白方括号表示法允许您使用变量来调用数组中的某个对象。
你会如何在点符号中做这样的事情?
var item = {};
item['1'] = 'pen';
var x = 1;
console.log(item[x]); // console will show 'pen'
不能使用以点表示变量(短使用eval
,你不想要做的)。使用点符号,属性名称本质上是一个常量。
myObj.propName
// is equivalent to
myObj["propName"]
如果用数字来访问你必须数组使用括号:
item[0]
var k = 0;
item[k]
为
item.0
不起作用(错误的语法)。
如果你使用一个字符串
item["key"]
var p = "key";
item[p]
等于
item.key
在后一种情况下
var p = "key";
item.p
会导致错误的输出p
不作为变量这里治疗。
谢谢,我没有具体询问一个数字,我只是没有想到一个更好的标识符。但是,这也是了解数字的好消息。 –
点符号仅限于某些字符...看到this question ......在方括号可以让你打破限制:
var item = {};
item['very long variable name containing empty spaces ... and dots...'] = 'valid var';
item.1 = 'not valid var'; // will not work;
item['1'] = 'valid var'; // will do just fine...
简短的回答是:你不能访问除非您知道酒店的名称,否则酒店将使用dot notation。
点符号还会限制您可以访问的属性名称,因为属性名称必须是有效的JavaScript标识符。例如,如果您有一个名为my prop
(或更好,my%prop
)的属性,则不可能在不使用bracket notation的情况下访问它,因为这会导致大多数情况下出现语法错误。
Member Operators page on MDN解释了这一点。
顺便说一句:
岂不是有点混乱,以便能够动态地查找使用点符号属性?
item.x // is this the property "x" or do I have to look up variable "x"?
感谢您的参考链接。是的,现在我想到了,这会让人困惑。我只是不知道是否有办法。 –
-1因为它是错误的。看到我的答案。第一行中的'propName'被视为属性,而不是变量! – sjngm
@sjngm我不同意。@nnnnnn并不意味着'propName'是一个变量,而是一个属性的名称。 –
@zack好吧,然后一个不同的名字会更好。它说“等同于”意味着第一行与第三行完成相同的事情。这不是事实。 – sjngm