gpt4 book ai didi

javascript - 为什么 Ext.id 函数被覆盖?

转载 作者:行者123 更新时间:2023-11-30 10:52:13 24 4
gpt4 key购买 nike

我正在尝试包装一个 HTMLElement 以创建一个 Ext.Element,但这神秘地用一些 ID 覆盖了 Ext.id 函数,并使 ExtJs 在该点之后无法使用

虽然我不得不挖掘原始应用程序中的大量代码以找到这个微妙的错误,但我已经尝试制作这个简单的示例来说明问题,例如在线尝试此代码 http://jsfiddle.net/rdudW/1/或者使用这个

<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 alert show function definition 之前调用 id 'ext-gen2'

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

最佳答案

我浏览了源代码,发现有一些函数,如果在错误的范围内调用,它们将覆盖 Ext.idnew 的省略可能就是这样做的。其中一个函数在 Ext 对象而不是正在创建的 Element 的上下文中调用。

看这个:

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

关于javascript - 为什么 Ext.id 函数被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4613763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com