this.SOMETHING总是返回undefined - extjs

时间:2012-09-12 14:49:21

标签: javascript extjs scope extjs4

我有一个包含标签面板的portlet。在该面板中是一个图表。在图表的一个功能中,我执行console.log(this)并能够查看所有内容。但是,我的主要目的是使用值this.ownerCt,这表示它存在,但是当我尝试使用它或console.log时,它报告为未定义。如果我执行this.idthis.idname,我会获得实际的ID。

问题:如果this.SOMETHING中有undefined的值,为什么this会返回console.log(this)

一些代码花絮: 这是Ext.Class.newClass additionalCls: Array[2] body: Ext.Element.Ext.core.Element childEls: Array[1] collapseDirection: "top" componentCls: "x-panel" componentLayout: Ext.Class.newClass componentLayoutCounter: 3 container: Ext.Element.Ext.core.Element dockedItems: Ext.Class.newClass el: Ext.Element.Ext.core.Element id: "stackedbarportlet-1055" itemId: "graph" items: Ext.Class.newClass ownerCt: Ext.Class.newClass xtype: "stackedbarportlet"

console.log(this.ownerCt)

我拿了几个实例,但这是它的一般输出!

undefined会产生:{{1}}。

2 个答案:

答案 0 :(得分:1)

<script>

var t1="";
var t2;

if (t1===undefined)
{
alert("t1 is undefined");
}
if (t2===undefined)
{
alert("t2 is undefined");
}

</script>

如果你运行t2未定义 可能 this.ownerCt 没有价值

答案 1 :(得分:0)

您可以找到答案here。似乎有时console.log()调用被排队并最终在当前语句结束后调用,因此它们的输出不一定完全反映对象状态,就像它在代码中一样。

至少,当我在自定义ExtJS商店中覆盖构造函数时,我遇到了类似的行为。