这与如何获取键或值无关
在下面的示例中:
var exampleObject = {startIndex: 1, stopIndex: 2};
如何获得该对象的确切名称“ exampleObject
”?我尝试过exampleObject.constructor.name
,但结果却只有“ Object
”。
答案 0 :(得分:8)
您不能。*
首先,多个变量可以指向同一对象。变量仅是引用,而不是容器。没有一个对象的真实名称。这是一个示例:
function makeExample() () {
var x = {startIndex: 1, stopIndex: 2};
var y = x;
return y;
}
var z = makeExample();
在上面的代码中,对象的 name 应该是什么? x
,y
,z
?所有这些变量都不包含对象的副本,它们指向指向同一对象。 exampleObject
是变量的名称,而不是对象的名称。
变量名只是程序员要使用的标签,而不是代码。这与属性不同,后者是存储在对象内部并由键标识的数据,该键可以是字符串或符号。如果对象需要使用名称,则它应该是其自己的属性的一部分:
var exampleObject = { name: "exampleObject" };
*从技术上讲,在未作为模块执行的脚本的全局范围内使用var
创建的任何变量都将添加到window
对象中。那是过去的遗迹,您不应该依赖于此-实际上,现代JS代码应使用let
创建不具有此行为的变量。
答案 1 :(得分:0)
我知道的唯一方法是使用此自定义功能:
var returnObjectName = function (object) {
var objectName;
for(var i in window){
if(window[i] === object) {
objectName = i;
}
}
return objectName;
}
如果我做错了什么,不仅要拒绝我的回答,还要告诉我我做错了什么。