所以我想知道是否有办法使用function.name
而不是对象。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name
我的意思是这样的:
function myFunction() {}
console.log(myFunction.name); // logs "myFunction"
// but like
var myObj = {};
console.log(myObj.name); // logs "myObj"
如果有可能,它将如何处理这样的事情?
var myObj = {};
var myObj2 = {};
console.log(myObj2.name); // logs "myObj" or "myObj2" or both?
答案 0 :(得分:6)
两件事
Object
默认情况下不具有name
属性,除非您在定义对象时指定相同内容,例如
var myObj = {
name : "myObj"
};
myObj2.name
中,myObj2
不是对象的名称,它是对象的引用名称(变量)。答案 1 :(得分:2)
简短回答?否。
另一方面,正如您所知,全局变量是窗口变量的一部分。因此,您可以执行以下操作:
function findName(obj, scope){
if(scope === void 0){
scope = window
}
for (prop in scope) {
if(scope.hasOwnProperty(prop) && scope[prop] == obj){
return prop
}
}
}
注意:这是获取变量名称的极其无效的方法!