嗯,我不知道一个更好的头衔,
我想知道是否有办法做某事。像这样:
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)
感谢您的回答
谢谢你的答案=),啊,这很难过
问题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中它是一个'特权'功能,我可以调用方法,
我将在问题中编辑它,
感谢你指出这一点,我甚至没有意识到在这里写这个问题时
它运行良好,除了我找不到方法,动态地将数据返回到保存实例的对象“
答案 0 :(得分:2)
您无法获取变量的名称,但您似乎在询问myMethod()
如何将属性添加到myVar
,其中myVar
是myFunc
的实例} 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。