2015-12-09 88 views
1

有人認爲這是Variable name as a string in Javascript的重複,這是不正確的。如果你閱讀下面的測試,你會明白,提供的方法並不令人滿意,因爲這個變量HAS是一個變量,它不能是一個對象屬性。將變量名稱轉換爲字符串的說明

我一直在四處尋找「如何變量名轉換爲字符串」,但我得到的是物和事,只有在全球範圍內的工作(如How to convert variable name to string in JavaScript?解釋)。

有沒有辦法將一個變量名直接轉換成一個字符串,而不做怪異的東西。

喜歡:

var alertThis = "dont alert this" 
alert(alertThis.forVarToString()); 
// This should return "alertThis" 

這個功能是我在做什麼十分必要的。

+6

你究竟在做什麼?我很確定這不是必要的。 – Bergi

+0

[變量名稱作爲Javascript中的字符串]的可能重複(http://stackoverflow.com/questions/4602141/variable-name-as-a-string-in-javascript) – JCOC611

+0

@ JCOC611這是沒有重複的,因爲我說,給出的答案不幫助我想要完成的東西(感覺我不能讓我的變量對象屬性) –

回答

1

我不認爲這通常是可能的(這是存儲在某個符號表中的內部值)。全局變量的過程中暴露在this(例如,窗口),因此可以判斷一個給定的字符串是否是一個全球性的標識符:

var hello = 'Hi'; 
Object.keys(window).indexOf('hello') >= 0; 
//=> true 

至於方法任何標識轉換爲對應的字符串表示(不是它的意思是),那不會很有用,因爲要那叫那個方法,你必須先有那個標識符,在這種情況下你已經知道它的名字了。

+0

對不起,如果我問的太多了,但'.indexOf('hello')> = 0;'做什麼? –

+0

@julianavar'Object.keys(window)'是一個字符串列表,所以如果indexOf('hello')'返回該列表中'hello'的索引(如果找到的話)。否則返回'-1'。所以通過檢查'> = 0',我們檢查是否聲明瞭'window.hello'。 –

+0

是的,那不會做... –