2017-05-17 41 views
1

我正在使用一个我不知道全局对象名称(不,它不是窗口)的软件,但我想要。使用'this'获取[object Object]的名称

console.log(this) 

给我[对象的对象]

for(var property in this) { 
    console.log(property + "=" + this.property); 
} 

给我的 '本' 的属性。

但是,我需要'this'的名称/ id(与我可以访问另一个上下文/对象中的属性的东西)。是否有可能得到那个?

我已经为此searched,但找不到合适的解决方案。

+1

对象没有名称? – Liam

+0

请发布您的完整代码@Faizy –

+0

@Liam他们做,如果他们使用构造函数或新的ES6类语法创建。 – WilomGfx

回答

4

您需要使用bracket notationthis上下文中获取属性值。

for(property in this) { 
    console.log(property + "=" + this[property]); 
    //      ----^^^^^^^^^^^^^^---- 
} 

可以使用Object.keys方法,它返回属性名称的数组获取对象的属性。


FYI:要访问this范围内的另一种情况下是指其使用具有两个上下文范围内的变量(通常可以使用全局变量)。

// initial variable or neglect to make it as global 
var self; 

/* cotext 1 start */ 

// define 
self = this; 

for(property in self) { 
    console.log(property + "=" + self[property]); 
} 
/* cotext 1 end */ 

/* cotext 2 start */ 

// use `self` to refer the context1   
for(property in self) { 
    console.log(property + "=" + self[property]); 
} 

/* cotext 2 end */ 
+1

另外,糟糕的选择是'JSON.stringify'。或'console.log(“%O”,this);'或'console.log(“%o”,this);'。 –

+1

对不起,我的意思就像你写的那样。我的错。谢谢。 – Faizy

+0

虽然这在OP代码中显然是一个错误,但我不认为这就是他们所问的。 –

相关问题