我希望能够从方法内部访问此类实例的var名称。我可以将实际变量名称设置为构造函数中的字符串吗?
var myClass = function(filePath){
this.run = function(){
// I want to access the string "x"
console.log( this.variableName ); // ????
};
};
var x = new myClass("./sayHi.js");
答案 0 :(得分:0)
在构造变量名称时将其作为参数传递
var myClass = function(assigned_name,filePath){
this.variableName = assigned_name
this.run = function(){
console.log( this.variableName );
}
}
var x = new myClass('x','./sayHi.js');
x.run()
<强>输出:强>
'x'
适用于:
虽然很多人说这是毫无意义的,但我遇到了需要它的情况。另外,许多jQuery操作依赖于了解其自身变量名称的原则。它总是“$
”。在将匿名函数分配给onclick事件时,人们会在jQuery方法中引用“$
”,而不会发现它正是您的问题所要求的。
如果您的myClass()
对象动态分配回调到您的特定类实例的事件处理程序,则需要这样做,因为这些调用通常依赖于保存在特定类变量中的信息。由于您的myClass()
函数不像jQuery那样广泛,因此您不能指望它始终被分配到同一个变量,例如“$
”。
在构造时将自己指定的变量名传递给它自己是我发现让我的类实例知道它的全局引用是什么的最好方法。