获取保存函数实例的变量的名称,在函数内部,

时间:2012-07-03 06:26:22

标签: javascript

嗯,我不知道一个更好的头衔,
我想知道是否有办法做某事。像这样:

function myFunc() {
    //do some Stuff...
   this.myMethod = function(x) {
    //do some more Stuff
    var nameofthevariable = myVar//somehow get the Variables name
    myVar.somePropertie = "SomeOtherStuff";
   }
}
myVar = new myFunc();
myVar.myMethod(x)
  • 有没有办法从函数内部获取Name或Var本身,它包含哪个实例? 所以我可以放回数据,该方法创建到变量中,而不将其作为参数传递给函数或方法=)

感谢您的回答

答案

谢谢你的答案=),啊,这很难过 问题this是我有一个对象,
对象的属性创建myFunc的实例并执行myMethod()
这应该为myObj添加一个新的属性,所以我从myMethod

的实例中分离myFunc()的输出
function myFunc() {
    //do some Stuff...
   this.myMethod = function(x) {
    //do some more Stuff
    var nameofthevariable = myObj//somehow get the Variables name
    myObj.somePropertie = "SomeOtherStuff";
   //and here i could do
   this.Parent.somePropertie = "SomeOtherStuff";
   }
}
myObj = {}
myObj.myProp = new myFunc();
//i could do:
myObj.myProp.Parent = myObj
//
myObj.myProp.myMethod(x)

但是我可以将myObj作为参数传递给myMethod 我想通过获取变量名称

来向上添加对象,我想要添加两次

我认为,this在该上下文中不起作用,因为我无法访问级别高于myFunction

实例的变量

您的编辑

哦,是的,谢谢=)在真正的Code中它是一个'特权'功能,我可以调用方法,
我将在问题中编辑它,
感谢你指出这一点,我甚至没有意识到在这里写这个问题时 它运行良好,除了我找不到方法,动态地将数据返回到保存实例的对象“

1 个答案:

答案 0 :(得分:2)

您无法获取变量的名称,但您似乎在询问myMethod()如何将属性添加到myVar,其中myVarmyFunc的实例} myMethod()被调用 - 在这种情况下使用this将起作用:

function myFunc() {
    //do some Stuff...
   this.myMethod = function(x) {
      //do some more Stuff
      this.somePropertie = "SomeOtherStuff";
   }
}
myVar = new myFunc();
myVar.myMethod(x)

请注意,您定义myMethod()的方式是私有函数,只能在myFunc()内访问 - 使用myVar.myMethod()语法调用它,以使其成为属性(因此我也改变了这一点。)

函数中this的值取决于函数的调用方式。当您使用myFunc()运算符调用new时,JS会将this设置为新创建的实例。当您使用myVar.myMethod()“dot”语法调用方法时,JS将this设置为myVar

有关this的更多信息,建议您阅读the MDN this article