Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 奇怪的json用法_Javascript_Json - Fatal编程技术网

Javascript 奇怪的json用法

Javascript 奇怪的json用法,javascript,json,Javascript,Json,我在上看到了javascript代码的一部分,我想知道如何在代码下面工作,这意味着什么 var obj = { get x() { return 17; } }; 据我所知,关键字get只是将x()分类为一个getter,并且似乎是自调用的。它在jScript(IE)中不受支持,并且不是保留字 您可以这样引用它:obj.x;//17 用拉门的话来说,它们的行为相同: var foo = { get x() { return 17; } }; document.write(foo.x);​

我在上看到了javascript代码的一部分,我想知道如何在代码下面工作,这意味着什么

var obj = { get x() { return 17; } };

据我所知,关键字
get
只是将
x()
分类为一个getter,并且似乎是自调用的。它在jScript(IE)中不受支持,并且不是保留字

您可以这样引用它:
obj.x;//17

用拉门的话来说,它们的行为相同:

var foo = { get x() { return 17; } };  
document.write(foo.x);​ // 17

var bar = { x: function() { return 17; } };  
document.write(bar.x());​ // 17

这就是为x属性指定一个getter,它与JSON无关。您会感到困惑,因为JSON是JS对象的有效初始值设定项,然而,并非所有JS初始值设定项都是有效的JSON

该语法意味着当您从
obj.x
读取时,它将调用该函数以获取其值等于:

var obj = {
    x: 17
}
或者:

var obj = {
    x: (function(){
        return 17;
    })()
}
这意味着
var obj
声明了一个对象,并且
get x(){return 17;}
声明了obj对象的一个属性,其值为17:

var myVar = obj.x;//Equals to 17

对不起,我已经编辑并修复了这篇文章。我想现在是对的,“得到”是什么意思。我觉得这两件事不一样。您可以从javascript控制台看到
dir(obj)
。这就是“get”的建议:计算函数的返回值(在17例中)并将“x”变量设置为该值。阅读关于get运算符的所有内容:这不是完全相同的,
foo.x
bar.x()
我说它们的行为相同,而不是编码相同。