【问题标题】:Getting the object variable name for the new object获取新对象的对象变量名
【发布时间】:2019-07-08 12:43:44
【问题描述】:

我有一个对象构造函数,例如:

function myObjConstr () {
    console.log(object_name);
}

我想要这个结果:

var name1 = new myObjConstr(); //print in console log "name1"
var nameff = new myObjConstr(); //print in console log "nameff"

【问题讨论】:

  • 对象和它的赋值变量之间没有关联。 IOW:不可能。
  • 只需在对象中定义一个字段,即“名称”,并在创建该对象的实例时设置初始值
  • 请解释您为什么需要这样做。能够解决什么问题?由于如下所示,可以使用对象名称等来模仿它,但通常会有更好的解决方案来解决这个问题。
  • 对象本身并没有“名称”。相反,变量“命名”对象:x = y = {}。这个新对象可通过“名称”x 和 y 访问,不知道它被用作的表达式或对其求值的“名称”。
  • @user2864740 很好,var x = y = new myObjConstr();但从逻辑上讲,如果 javascript 中有类似的东西在对象构造函数中返回分配的变量名,那么逻辑上没有问题。

标签: javascript variables logging constructor variable-assignment


【解决方案1】:

您需要将对象名称传递给构造函数:

function myObjConstr (obj_name) {
    this.object_name = obj_name;
    console.log(this.object_name);
}

var name1 = new myObjConstr("name1");
var nameff = new myObjConstr("nameff"); 

【讨论】:

  • 感谢您的回答,我不想在函数参数中发送 var 名称。我不喜欢重复代码:)
  • 什么意思?这是创建对象的标准。以您尝试的方式在代码中引用变量名是不正常的做法。变量名只是指向实际数据的引用/指针。名称应存储在对象中
  • @MostafaMaher 变量名无关紧要,希望它们被缩小或其他。甚至并非所有对象都分配给任何变量。如果需要名称,请使用字符串。
  • @Bergi 是的,如果对象没有分配给变量 .. 简单地返回 "" :)
  • function myObjConstr (obj_name) { console.log(this.constructor);为什么不这样 this.assignedVariableName 例如?!!
【解决方案2】:

你可以创建一个函数构造函数myObjConstr(),然后你可以创建新的myObjConstr()。

1) 函数构造函数

function myObjConstr (objName) {
    this.objName = objName;
}

2) 创建 myObjConstr 类型的对象

var name1 = new myObjConstr("name1");
var name2 = new myObjConstr("name2");

3) 如果要打印值,

console.log(name1.objName)

【讨论】:

  • 我不想在参数中将变量名传递给构造函数。
【解决方案3】:

您不能将变量名传递给构造函数。相反,您可以将变量名称的array 转换为objects 的数组

let names = [
  'name1',
  'nameff'
]
let objects = names.map(name => myObjConstr(name));
function myObjConstr(name){
  this.name = name;
  console.log(this.name);
}

【讨论】:

    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2011-09-08
    相关资源
    最近更新 更多