如何仅获取对象名称并将其动态转换为字符串?

时间:2019-03-04 16:59:14

标签: javascript object stringify

我将以字符串形式动态转换对象的名称。

我将对象的名称转换为字符串以动态地检索它。 所需的输出:

  

“ CartModel”

当前返回我

  

“ [对象对象]”

这是我的对象:

var CartModel= {
		userID:{ 
			beverage:{ 
				// value
			},
			sandwich:{ 

			},
			treat:{

			},
			dessert:{

			}
		}
		
	  }
	  
console.log('"' + CartModel + '"'); 

任何提示都会很棒, 谢谢

3 个答案:

答案 0 :(得分:1)

您要一个对象返回分配给它的变量的名称。这是不可能的。对象不知道为其分配的变量的名称。某些对象可以分配给多个变量,也有可能没有将对象分配给任何变量。

您可以通过覆盖toString()来定制将对象转换为字符串时显示的值。例如

CartModel.toString = function () {
  return 'CartModel';
}

现在,如果您致电

console.log('"' + CartModel + '"'); 

"CartModel"将显示在控制台中:

答案 1 :(得分:0)

如果要以字符串形式打印整个对象,则可以使用JSON.stringify(obj)方法

var obj = {
  name:"abc",
  value:{
    a:1,
    b:2
  }
}
console.log(JSON.stringify(obj));

编辑: 在打印对象名称的情况下,可以使用new关键字创建对象的类(函数),并使用构造函数打印名称

function test(x, y){
  this.x = x;
  this.y = y;
}

var abc = new test(1,2);
console.log(abc.constructor.name);

答案 2 :(得分:0)

如果它是函数而不是对象,则可以检索其名称。

或者您可以提供toString方法,即var User = { toString: () => 'some name' };

然后,如果执行调用对象toString方法的操作,它将起作用。