Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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中是什么?_Javascript_Object Literal - Fatal编程技术网

这在JavaScript中是什么?

这在JavaScript中是什么?,javascript,object-literal,Javascript,Object Literal,自从我上次使用JavaScript编程以来,我的JavaScript知识仍然非常零碎,但我想我现在已经重新学习了大部分内容。除了这个。我不记得以前见过这个。这是怎么一回事?我在哪里可以了解更多有关它的信息?它的对象文字语法。“wft”和“omg”是属性名,而“null”和“null”是属性值 这相当于: var something = { wtf: null, omg: null }; 查看mozilla关于对象文本的文档:我相信它是一个具有两个属性的对象,WTF和OMG 你可以说 var

自从我上次使用JavaScript编程以来,我的JavaScript知识仍然非常零碎,但我想我现在已经重新学习了大部分内容。除了这个。我不记得以前见过这个。这是怎么一回事?我在哪里可以了解更多有关它的信息?

它的对象文字语法。“wft”和“omg”是属性名,而“null”和“null”是属性值

这相当于:

var something = {

wtf: null,
omg: null
};

查看mozilla关于对象文本的文档:

我相信它是一个具有两个属性的对象,WTF和OMG

你可以说

var something = new Object();
something.wtf = null;
something.omg = null;

查看JSON.ORG这是一个内联JavaScript对象实例化的示例。

这是一个对象文本。它实际上相当于以下内容:

something.wtf = "myMessage";
alert(something.wtf);

它是一个对象文本(或者,有时是带有散列类的库中的普通对象)

与以下内容相同:

var something = new Object();
something["wtf"] = null;
something["omg"] = null;

它是一个具有两个属性的对象文字。通常这是人们创建关联数组或散列的方式,因为JS本身不支持这种数据结构。尽管请注意,它仍然是一个成熟的对象,但您甚至可以添加函数作为属性:

var o = new Object();
o.wtf = null;
o.omg = null;
您可以使用for循环遍历属性:

var myobj = {
    name: 'SO',
    hello: function() {
        alert(this.name);
    }
};
从“我想要Javascript中的关联数组”的角度进行解释(在许多情况下,对象文字最终用于此)

关联数组是使用字符串而不是数字作为索引的数组

for (i in myobj) {
    // myobj[i]
    // Using the brackets (myobj['name']) is the same as using a dot (myobj.name)
}
Javascript没有关联数组,也不支持关联数组。但是……Javascript中的所有数组都是对象,Javascript的对象语法提供了关联数组的基本模拟。由于这个原因,上面的示例代码实际上可以工作。请注意,这不是一个真正的数组,如果您尝试使用它,它会有真正的陷阱。示例中的“person”元素成为数组对象的属性和方法的一部分,就像.length、.sort()、.splice()和所有其他内置属性和方法一样

您可以使用以下循环遍历对象的属性

var normalArray    = [];
    normalArray[1] = 'This is an enumerated array';

    alert(normalArray[1]);   // outputs: This is an enumerated array

var associativeArray           = [];
    associativeArray['person'] = 'John Smith';

    alert(associativeArray['person']); // outputs: John Smith   
在上面的示例中,AssociationArray.length将为零,因为我们实际上没有将任何内容放入数组中,而是将其放入AssociationArray的对象中。AssociationArray[0]将未定义

上面示例中的循环还将拾取已添加到数组中的任何方法、属性和原型,而不仅仅是您的数据。人们在原型库中遇到的许多问题是,它们的关联数组会中断,因为原型向数组对象添加了一些有用的原型函数,而对于i in x循环,则会选择这些附加方法。这就是将数组/对象用作穷人关联数组的窍门

最后一个示例是,无论您是将AssociationArray定义为数组([])、对象({})、正则表达式(//)、字符串(“”)还是任何其他Javascript对象,前面的代码都将起作用

底线是——不要尝试使用关联数组,它们是什么代码——对象属性,而不是数组

此代码:

var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) { 
   document.writeln(i+':'+associativeArray[i]+', '); 
   // outputs: one:First, two:Second, three:Third
};
具有与以下相同的效果:

var something = {wtf:null}
或不必要的冗长:

var something={};
something.wtf=null;
记住最后一行与

var something=new Object();
something.wtf=null;
因此,您可以使用:

something["wtf"]=null;

哦,我明白了。那么,根据链接,字符串是指向“”还是“”作为对象指向{}?不确定这是否是最好的描述方式,但我想我现在明白了。谢谢。现在这个问题已经回答了,我可以补充一下AppJet有一个简单的JavaScript教程吗?关于“对象”的课程解释得很好:JavaScript不支持关联数组/哈希?我认为一切都是一个关联数组/散列。
var myName="wtf";
something[myName]=null;