javascript变量中包含的内容

时间:2013-11-19 12:30:38

标签: javascript json variables

我看了一下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.

4 个答案:

答案 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

<案例2

在第二种情况下,您有一个名为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"