1

我已经使用以下代码从 ExtJs 中看到了教程:

 var myDiv = Ext.get('myDiv');
 myDiv.highlight();   

hightlight() 函数来自哪里?它来自原生 Javascript 还是 ExtJs 框架?我做了简单的搜索,但在 API 文档中找不到。如果 hightlight() 来自 ExtJs 框架,它实际上是如何覆盖 Javascript 中的本机行为的?

我想知道 Jquery 选择器是如何$('#myDiv')被 Javascript 识别的?Javascript 编译器不应该识别 $('') 符号吗?

我的描述很差,对不起。我是 javascript 初学者。

4

2 回答 2

2

Prototype、Ext 等扩展了 DOM 对象的原型(顺便说一句,这是非常值得怀疑的行为),例如HTMLElement.prototype,并向其中添加它们自己的函数。这使您可以像示例中所示那样调用它们。

jQuery 悬停根本不使用任何魔法。$是 JavaScript 中的普通标识符,就像普通字符一样。所以它只不过是一个命名的函数$,然后你在执行$('#selector')等操作时调用它。该函数的返回值通常是一个 jQuery 对象,它的行为类似于一个数组并且有很多有用的方法。因此,您永远不会处理本地 DOM 对象,而只是处理包含一个或多个它们的对象。

于 2012-12-25T13:41:34.970 回答
2

Ext 提供了一个Element对象,它是由诸如Ext.get(). Element包装了 DOM 节点,但肯定不会改变 HTMLElement 对象(就像 jQuery $ 函数一样)。事实上,Element.dom属性暴露了原始未更改的 DOM 节点。 Element.highlight()只是一个 Ext.Element 方法,并且在 API 文档中清楚地记录了 - 它没有什么神秘之处。

虽然 Ext 在以前的版本中用于修改一些原生的 JS 对象(日期、字符串、对象),但它从未接触过原生的 HTMLElement 对象。这曾经是大多数 JS 库中的常见做法,但截至 4.0 版(现在已经几年了)Ext 还没有触及任何原生 JS 原型。

于 2012-12-26T05:00:31.633 回答