[英]what is this thing in JavaScript?
var something = {
wtf: null,
omg: null
};
自從我上次編程以來,我的JavaScript知識仍然非常不完整,但我想我現在已經重新學習了大部分內容。 除此之外。 我記不起以前見過這個。 它是什么? 我在哪里可以了解更多相關信息?
它是對象文字語法。 '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
它是一個具有兩個屬性的對象文字。 通常這是人們創建關聯數組或散列的方式,因為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)
}
來自“我想在Javascript中使用關聯數組”的觀點(在很多情況下,最終會使用對象文字)
關聯數組是一個使用字符串而不是數字作為索引的數組。
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函數,而對於x循環中的i,會選擇其他方法。 這就是使用Array / objects作為窮人的關聯數組的一個小問題。
作為最后一個示例,無論您將associativeArray定義為Array([)),Object({}),Regular Expression(//),String(“”)還是任何其他Javascript對象,前面的代碼都將起作用。
底線是 - 不要嘗試使用關聯數組,代碼是什么 - 對象屬性,而不是數組。
它是一個Object文字 (或者有時候是帶有Hash類的庫中的vanilla對象 )。
同樣的事情:
var o = new Object();
o.wtf = null;
o.omg = null;
這是一個對象文字。 它實際上等同於以下內容:
var something = new Object();
something["wtf"] = null;
something["omg"] = null;
我相信它是一個具有2個屬性的對象,WTF和OMG。
你可以說
something.wtf = "myMessage";
alert(something.wtf);
看看JSON.ORG
這段代碼:
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;
這是內聯JavaScript對象實例化的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.