JavaScript中的这个东西是什么?

iyfjxgzm  于 2023-04-19  发布在  Java
关注(0)|答案(8)|浏览(124)

考虑:

var something = {

    wtf: null,
    omg: null
};

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

clj7thdc

clj7thdc1#

它是对象文字语法。'wft'和'omg'是属性名,而null和null是属性值。
它相当于:

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

查看Mozilla关于对象文字的文档:http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals

6vl6ewon

6vl6ewon2#

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

var myobj = {
    name: 'SO',
    hello: function() {
        alert(this.name);
    }
};

你可以使用for循环来遍历属性:

for (i in myobj) {
    // myobj[i]
    // Using the brackets (myobj['name']) is the same as using a dot (myobj.name)
}
ws51t4hk

ws51t4hk3#

从“我希望JavaScript中有一个关联数组”的Angular 进行解释(这是在许多情况下最终使用对象文字的原因)
"Mastering JavaScript Arrays"
关联数组是使用字符串而不是数字作为索引的数组。

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

JavaScript没有,也不支持关联数组.然而... JavaScript中的所有数组都是对象并且JavaScript的对象语法给出了关联数组的基本模拟.为此上面的示例代码将实际工作。请注意,这不是一个真实的的数组,如果您尝试使用它,它会有真正的陷阱。示例中的'person'元素将成为Array对象的一部分'的属性和方法,就像.length、.sort()、.splice()以及所有其他内置属性和方法一样。
您可以使用以下循环遍历对象的属性…

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
};

在上面的例子中,associativeArray.length将为零,因为我们实际上没有将任何内容放入Array中,而是将其放入associativeArray的对象中。associativeArray[0]将是未定义的。
上面示例中的循环还将获取任何方法、属性和已经添加到数组中的原型,而不仅仅是你的数据。人们使用Prototype库的很多问题是他们的关联数组会中断,因为Prototype向Array对象添加了一些有用的Prototype函数,而for i in x循环会拾取这些额外的方法。这就是使用Array/的陷阱对象作为穷人的关联数组。
作为最后一个示例,无论您将associativeArray定义为Array([])、Object({})、regular expression(//)、String(“”)还是任何其他JavaScript对象,前面的代码都将正常工作。
底线是-不要尝试使用关联数组,代码是它们是什么-对象属性,而不是数组。

xggvc2p6

xggvc2p64#

它是一个对象字面量(或者,有时,在具有Hash类的库中是一个普通对象)。
这是相同的事情:

var o = new Object();
o.wtf = null;
o.omg = null;
vawmfj5a

vawmfj5a5#

这是一个对象文字。它实际上等效于以下内容:

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

eeq64g8w6#

我相信它是一个有两个属性的对象,wtfomg
你可以说

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

查看 * json.org *。

hyrbngr7

hyrbngr77#

此代码:

var something = {wtf:null}

具有与以下相同的效果:

var something={};
something.wtf=null;

或者不必要的冗长:

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

记住最后一行和

something["wtf"]=null;

因此,您可以用途:

var myName="wtf";
something[myName]=null;
gajydyqb

gajydyqb8#

这是一个内联JavaScript对象示例化的示例。

相关问题