3 回答

TA貢獻1829條經驗 獲得超7個贊
簡短的答案:不。myObj不是對象的名稱,它是持有對該對象的引用的變量的名稱-您可以有任意數量的其他變量持有對該對象的引用。
現在,如果是您的程序,則要制定規則:如果您想說任何給定對象永遠只能被一個變量引用,并努力在代碼中強制執行,那么只需在對象上設置一個屬性即可變量名。
就是說,我懷疑您要的實際上是您真正想要的。也許更詳細地描述您的問題...?
Pedantry: JavaScript沒有類。someObject是構造函數。給定對對象的引用,您可以使用構造函數屬性獲得對創建該對象的函數的引用。
針對您提供的其他詳細信息:
您正在尋找的答案可以在以下位置找到:JavaScript回調范圍(以及對SO上其他眾多問題的回答-這對JS新手來說是一個普遍的困惑點)。您只需要將對對象成員的調用包裝在一個閉包中,以保留對上下文對象的訪問。

TA貢獻1851條經驗 獲得超4個贊
通過在函數中使用它,然后使用以下命令檢查函數的來源,也許可以實現您的目標toString():
var whatsMyName;
// Just do something with the whatsMyName variable, no matter what
function func() {var v = whatsMyName;}
// Now that we're using whatsMyName in a function, we could get the source code of the function as a string:
var source = func.toString();
// Then extract the variable name from the function source:
var result = /var v = (.[^;]*)/.exec(source);
alert(result[1]); // Should alert 'whatsMyName';
添加回答
舉報