喜欢这段代码
var Obj = function () {}
Obj.prototype.getVarName = function () {
console.log( someFunction() );
}
var obj = new Obj();
obj.getVarName(); //output "obj";
var obj1 = new Obj();
obj1.getVarName(); //output "obj1";
我不想这样做
var Obj = function (variableName) {
this.variableName = variableName || "undefined";
}
Obj.prototype.getVarName = function () {
console.log(this.variableName);
}
var obj = new Obj('obj');
obj.getVarName(); //output "obj";
var obj1 = new Obj('obj1');
obj1.getVarName(); //output "obj1";
有人对这个问题有任何想法,谢谢。
p.s:我用somg做错了事。所以我问这个未答复的问题,谢谢所有人。
我通过类obj的方法将事件发送到DOM元素,并且这个obj有somg子类obj,当触发事件时,这个varialbe指向dom elem,任何我不知道如何识别哪个obj触发此事件,所以我尝试这种方式。
但这是一种错误的方式!所以我通过其他方法尝试它。我使用call方法来改变这个变量,现在我解决了我的问题。
答案 0 :(得分:2)
我相信答案是“它无法完成”。
在运行时,代码不应查看变量标签。作为程序作者,它们适合于您在程序写入时使用。
如果一个Object需要一个你需要在运行时检查和使用的标签,你应该给它使用该属性。
someObject.myName = "someObject"; // if that's what you really want
答案 1 :(得分:1)
从对象到将变量保持为值的变量之间根本就没有关系。
因为可以有多个变量。
var obj = new Obj();
var obj2 = obj;
obj2.getVarName(); // what do you want ?
这可能是所有编程语言中变量概念的基础之一。你不会改变它。如果你想让你的对象有一个名字,解决办法是给他们一个名字,而不是使用变量名。
答案 2 :(得分:1)
什么破坏和Genia S.说。
你的代码闻起来很糟糕。你为什么要这样做?
不想要这样做的方式实际上看起来是最好的选择,即创建一个带有名称字段的对象。