是否存在对象的function.name之类的东西

时间:2016-06-01 13:56:47

标签: javascript

所以我想知道是否有办法使用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?

2 个答案:

答案 0 :(得分:6)

两件事

  1. Object默认情况下不具有name属性,除非您在定义对象时指定相同内容,
  2. 例如

    var myObj = {
      name : "myObj"
    };
    
    1. 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
        }
    }
}

注意:这是获取变量名称的极其无效的方法!