2011-04-15 57 views
0

例子:

console.log(myobject['media$group']); 

輸出未定義

console.log(myobject['media\$group']); 

產出預期值

這是怎麼回事?我在使用YouTube的API時遇到了這個問題。

編輯:

我很困惑很多,你說這工作的,所以我會發布更多的信息,因爲也許我錯過了一些愚蠢的事。

這裏是我運行代碼:

console.log(feed); 
console.log(feed["media$group"]["media$thumbnail"]); 

下面是從第一個日誌切割的對象從螢火蟲\粘貼:

author 
    [Object { name={...}, uri={...}}] 

category 
    [Object { scheme="http://schemas.google.com/g/2005#kind", term="http://gdata.youtube.com/schemas/2007#video"}, Object { scheme="http://gdata.youtube.co...mas/2007/categories.cat", term="Tech", label="Science & Technology"}, Object { scheme="http://gdata.youtube.com/schemas/2007/keywords.cat", term="google"}, 10 more...] 

content 
    Object { $t="The Google Doodle team ...googleblog.blogspot.com", type="text"} 

gd$comments 
    Object { gd$feedLink={...}} 

gd$rating 
    Object { average=4.77813, max=5, more...} 

id 
    Object { $t="http://gdata.youtube.co.../api/videos/3NGSU2PM9dA"} 

link 
    [Object { rel="alternate", type="text/html", href="http://www.youtube.com/...A&feature=youtube_gdata"}, Object { rel="http://gdata.youtube.co...as/2007#video.responses", type="application/atom+xml", href="http://gdata.youtube.co...s/3NGSU2PM9dA/responses"}, Object { rel="http://gdata.youtube.co...emas/2007#video.related", type="application/atom+xml", href="http://gdata.youtube.co...eos/3NGSU2PM9dA/related"}, 2 more...] 

media$group 
    Object { media$category=[1], media$content=[3], more...} 

published 
    Object { $t="2011-04-14T00:31:33.000Z"} 

title 
    Object { $t="Charlie Chaplin Google Doodle", type="text"} 

updated 
    Object { $t="2011-04-15T23:14:58.000Z"} 

yt$statistics 
    Object { favoriteCount="2539", viewCount="0"} 

下面是從第二的console.log錯誤:

feed.media is undefined 
[Break On This Error] console.log(feed["media"]["media"]); 

回答

3
'media\$group'

'media$group'是因爲等於不是已知的轉義序列,因此變成$

因此,只需在兩次調用之間定義字段即可。

0

你的情況很有趣,我不知道你爲什麼需要用反斜槓轉義$字符,但這些都是預期的輸出。

var obj = { 
    some$Key: 'someValue' 
} 

console.log(obj.some$Key); // someValue 
console.log(obj['some$Key']); // someValue
0

聽起來像服務器轉義字符串中的字符。這個或其他一些字符串構建系統已經逃脫了$這個字符,然後將你的對象設置爲該值。

另外"foo$bar" === "foo\$bar"

0

它工作正常。

a={'a':'test1', '$':'yes'} 

console.log(a['$']); // 'yes' 

嘗試this(的jsfiddle)

+0

你肯定例如工作,這使我更糊塗了。 – Joren 2011-04-15 23:53:00