我看了一下json,我想知道我是否在变量中存储了json路径(例如:foo.bar
)并调用该变量然后我实际调用的是foo.bar
或者是foo.bar
包含的内容?
修改 我将展示一个例子:
var json = { "foo": { "bar": "some value" } };
var container = json.foo.bar;
document.write(contaier);
//Is that equals document.write(json.foo.bar);
//Or is it equals document.write("some value");
//I know that in this particular example this doesn’t make any use, but if you whant to manipulate the path it does.
答案 0 :(得分:1)
JSON无法序列化函数。所以foo.bar
永远不可能是一个功能。调用它会给你一个错误。
如果您询问按值传递与传递引用:如果foo.bar
是对象,您将获得< EM>参考。如果它是标量(如数字或字符串),您将获得值。
答案 1 :(得分:0)
让我通过向您展示一些简单的代码行来向您解释:
var data = {
foo: {
bar: 'case 1'
},
'foo.bar': 'case 2'
};
console.log(data.foo.bar); // 'case 1'
console.log(data['foo.bar']); // 'case 2'
console.log(data['foo']['bar']); // 'case 1'
<案例1
在第一种情况下,您有一个属性foo
,其中包含一个对象,其属性bar
包含字符串case 1
。
在第二种情况下,您有一个名为foo.bar
的属性,其中包含字符串case 2
答案 2 :(得分:0)
var json = { "foo": { "bar": "some value" } };
您可以在此处将值{ "foo": { "bar": "some value" } }
(对象文字)分配给json
。
var container = json.foo.bar;
在此处,您将bar
foo
属性json
属性的值指定给container
。它的工作方式与任何其他变量赋值一样,您可以将右侧表达式的值分配给左侧的变量。该值为"some value"
。
答案 3 :(得分:0)
它与document.write("some value");
具有相同的效果。
存储在变量中的值是属性中值的副本。在这种情况下,它是一个字符串,因此变量包含对字符串的引用的副本。
如果在将值输入变量后更改对象的内容(顺便说一下,它不是JSON,那么它是Javascript对象),变量中的值保持不变:
var obj = { "foo": { "bar": "some value" } };
var container = obj.foo.bar;
obj.foo.bar = "some other value";
document.write(container); // shows "some value"