【问题标题】:How get only the name of an object and transform it to string dynamically? [closed]如何仅获取对象的名称并将其动态转换为字符串? [关闭]
【发布时间】:2019-07-26 01:09:21
【问题描述】:

我会在字符串中动态转换对象的名称。

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

“购物车模型”

目前它返回给我

“[对象对象]”

这里是我的对象:

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

			},
			treat:{

			},
			dessert:{

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

任何提示都会很棒, 谢谢

【问题讨论】:

  • 对象不知道它的名字...
  • 您可以使用 ES6 速记属性语法来创建对象并获取名称:console.log(Object.keys({CartModel})[0]) 但您已经知道,因为这是您的代码。为什么需要这个?
  • 您的用例不清楚。你为什么要这样做?出于什么目的。如果您告诉我们问题是什么而不是您想要的解决方案,也许有办法解决您的问题。
  • 引用对象的变量名不是对象名。
  • 阅读:developer.mozilla.org/en-US/docs/Glossary/Identifier。第二段,第三句。

标签: javascript object stringify


【解决方案1】:

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

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

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

现在如果你打电话

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

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

【讨论】:

  • 我不知道我认为您的解决方案很有趣
【解决方案2】:

如果它是一个函数而不是一个对象,您可以检索它的名称。

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

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

【讨论】:

  • 我只想对对象变量名进行字符串化
【解决方案3】:

如果你想在字符串中打印整个对象,那么你可以使用 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);

【讨论】:

  • 我只想对对象变量名进行字符串化
猜你喜欢
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多