1

嗯,我不知道更好的标题,
我想知道是否有办法做某事。像这样:

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

你的编辑

哦,是的,谢谢=)在真正的代码中它是一个“特权”函数,我可以调用该方法,
我将在问题中对其进行编辑,
感谢您指出这一点,我什至没有意识到在此处的问题中编写此代码时.
它工作得很好,除了我没有找到方法,动态地将数据放回持有实例的对象”

4

1 回答 1

2

您无法获取变量的名称,但您似乎在问如何myMethod()将属性添加到调用myVar实例myVar的位置 - 在这种情况下 using将起作用:myFuncmyMethod()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()当您使用“点”语法调用方法时, JS 设置thismyVar.

有关this我建议阅读MDNthis文章的更多信息。

于 2012-07-03T06:31:31.963 回答