首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Ext.id函数会被重写?

为什么Ext.id函数会被重写?
EN

Stack Overflow用户
提问于 2011-01-06 10:07:09
回答 1查看 529关注 0票数 1

我试图包装一个HTMLElement来创建一个Ext.Element,但是这会神秘地用一些ID覆盖Ext.id函数,并使ExtJ在这一点之后无法使用。

我试着制作这个简单的例子来说明这个问题,尽管我不得不在原始应用程序中挖掘大量的代码来发现这个微妙的错误,例如,尝试这段代码在线http://jsfiddle.net/rdudW/1/或使用以下代码

代码语言:javascript
复制
<html>
<head>
<script type="text/javascript" src="adapter/ext/ext-base.js"></script> 
<script type="text/javascript" src="ext-all.js"></script> 
<script>
Ext.onReady(function(){
    alert(Ext.id)
    var elem = Ext.Element(document.getElementsByTagName('table')[0])
    alert(Ext.id)
});
</script>
</head>
<body>
<table><table>
</body>
</html>

在调用Ext.Element警报之前,显示函数定义,但之后显示id 'ext-gen2‘。

注意:我知道我应该使用新的Ext.Element,但这不是问题,问题是为什么这个简单的可能错误会发生呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-06 10:42:19

我已经浏览了源代码,并且有几个函子,如果在错误的范围内调用这些函子,就会覆盖Ext.idnew的遗漏很可能就是这样做的。其中一个函数是在正在创建的Ext对象instad的上下文中调用的。

见此:

代码语言:javascript
复制
Ext.Element = function(element, forceNew){
    var id;
    /* some code here */

    id = dom.id;

    /* some code here */

    /**
     * The DOM element ID
     * @type String
     */
    this.id = id || Ext.id(dom);
};

如果您用new调用它,那么this引用新创建的对象。如果您直接调用它,this指的是Ext

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4613763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档