使用句点(。)和Java中的[]表示法访问JSON对象有什么区别。例如,
var person = {
"firstName": "Foo",
"lastName":"Bar"
}
我确定访问“ firstName”和“ lastName”变量会为我提供相同的输出类型(字符串),即。
console.log(typeof person.firstName); // returns string
console.log(typeof person.lastName); // returns string
也可以使用两种方式访问它。或[]将给我相同的结果:
console.log(person.firstName); // returns Foo
console.log(person['firstName']); // returns Foo
我试图了解何时使用哪种表示法,何时不使用哪种表示法以及它们之间的实际区别。我读过某个地方,如果数据很复杂,我们就不能使用点号了,我不确定这意味着什么,并测试了一些示例输入数据:
"firstName": " Foo Bar "
"firstName": "@#@#$% Foo Bar!!!"
有趣的是,两者都给我相同的结果,有人可以解释一下这两种表示法的实际区别是什么,何时访问哪些?
答案 0 :(得分:1)
它们都是访问对象值的有效方法。
答案 1 :(得分:0)
欢迎来到Stackoverflow!
两者之间的主要区别在于,使用括号表示法可以定义和访问带有空格的属性-这是点表示法无法实现的。
uv_udp_*
如果要访问var foo = {
"I AM BAR": 1
}
上的单个属性"I AM BAR"
,请使用方括号表示法,它看起来像:foo
。点表示法是不可能的。
答案 2 :(得分:0)
没有区别。 当您需要找到带有变量的键时,[]方法很有用。 喜欢:
const theKey = 'test';
theArray[theKey]; // this work
theArray.theKey; // this dont work
答案 3 :(得分:0)
使用点符号必须提供确切的propertyName,但是在使用[]时可以使用该名称。
var person = {
"firstName": "Foo",
"lastName":"Bar"
}
使用。您只能通过
访问console.log(person.firstName); // returns Foo
使用[],您可以通过变量访问值
let couldChange = 'Name';
console.log(person['first'+couldChange]); // returns foo
console.log(person['last'+couldChange]); // returns bar
答案 4 :(得分:0)
大多数时候,您将使用点表示法。除非您需要对象的属性,否则您需要动态访问。这是因为您传递到方括号中的值可以是变量,只要它解析为字符串即可。查看此链接以获取更多信息:
https://codeburst.io/javascript-quickie-dot-notation-vs-bracket-notation-333641c0f781
答案 5 :(得分:0)
在大多数情况下,没有区别,请参见Property accessors (MDN),但是当属性名称不是有效的标识符名称(例如,当它的表示形式不是字符串或需要使用变量来命名属性时。
obj[1] // is valid
obj["1"] // is the same
obj.1 // is NOT valid
const propertyName = 1;
obj[propertyName] // the same as obj[1]
obj.propertyName // not same
答案 6 :(得分:0)
使用方括号可以允许您使用变量值来访问对象属性,而点符号则不能。例如:
var propName = 'age';
var o = {
name: 'Tom',
age: '29',
about: 'He\'s a cool guy!'
};
console.log(o.propName); // <-- Will be undefined
console.log(o[propName]); // <-- Bingo