可以说我有
var myObject = {
'myFunction' : function () {
// something here that lets me get 'myObject'
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了在这里找到的各种函数和类似this.constructor.name
但我总是得到'对象'作为返回的值.有没有办法在这种情况下获得变量的实际名称?
编辑解释为什么这样也许人们会更好地理解...我希望能够创建一个用setInterval连续调用的函数.像这样的东西:
var myObject = {
'intval' : '',
'timeout' : 500,
'start' : function () {
this.objectName = 'myObject'; // <--I want this to be dynamically popped
this.intval=window.setInterval("window['"+this.objectName+"'].myFunction()",this.timeout);
},
'stop' : function () {
window.clearInterval(this.intval);
this.intval='';
},
'myFunction' : function () {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将'myObject'硬编码到this.objectName但是我不希望它被硬编码,这可以正常工作.问题是我不想setInterval("window[this.objectName]",100) because
这样is not in the right context when
运行setInterval`,我不想让对象名硬编码
单程;
var myObject = {
'myFunction' : function () {
for (var name in window) {
if (window[name] === this) {
alert(name);
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这不是很好,如果将它包装在自己的命名空间中会稍微好一点。
你也可以随时
var myObject = {
moniker: "myObject",
...
Run Code Online (Sandbox Code Playgroud)
根据您的更新,您根本不需要解析该对象;
var myObject = {
'intval' : '',
'timeout' : 1500,
'start' : function () {
var self = this;
this.intval = window.setInterval(function() {
self.myFunction()
}, this.timeout);
},
'myFunction' : function() {
alert(this.intval);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12179 次 |
最近记录: |