javascript获取父对象/变量的名称

sli*_*khi 6 javascript object

可以说我有

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`,我不想让对象名硬编码

Mat*_*ics 5

不,你不能用JavaScript做到这一点.


Ale*_* K. 3

单程;

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)