如何通过其他对象调用Javascript函数?

时间:2014-06-13 07:11:44

标签: javascript

首先抱歉模糊的标题;想不出更恰当的措辞。我对Javascript和Web编程相对较新(尽管是.NET桌面编程的季节)。我一直在JS中反复查看以下编码模式,特别是对于jQuery UI等库函数:

$("#MyDiv").dialog({ ... });

我的问题是(像C#程序员一样思考),$("#MyDiv")的类型是什么? dialog()如何成为这种类型的成员?我可以看到dialog()在jQuery UI库中定义,可以动态附加到任何对象。这里的魔力是什么?什么是C#相当于此;扩展方法?

另外,有没有办法在这个“附加”函数中引用调用对象?

2 个答案:

答案 0 :(得分:2)

以下是一个快速细分:

$("#MyDiv").dialog({ ... });
  1. $是一个功能。虽然它看起来像一个特殊的符号,但它只是一个简单的旧javascript函数。
  2. 该函数接受参数"#MyDiv"并创建并返回一个jQuery对象。
  3. jQuery UI库确保所有创建的jQuery对象都有一个名为.dialog()的方法,方法是将其添加到jQuery对象的原型(jQuery使用的扩展机制)。
  4. 因此,.dialog()部分正在调用刚刚创建并由前一个函数返回的jQuery对象的.dialog()方法。

  5. 按顺序步骤:

    1. 调用$函数并将"#MyDiv"选择器参数传递给它。
    2. $函数创建一个jQuery对象并查找该选择器并存储与该jQuery对象中的该选择器匹配的所有DOM对象。
    3. 然后$函数返回这个新的jQuery对象。
    4. 然后在jQuery对象中搜索名为.dialog()的方法,当找到该方法时,就像在obj.method()中那样在该对象上执行。
    5. .dialog()方法查看调用它的jQuery对象(this指针设置为)并查看传递给.dialog()方法的参数并相应地执行操作

答案 1 :(得分:2)

$("#MyDiv")返回一个jQuery对象,dialog是jQuery类的一个方法。

与C ++等语言不同,Javascript允许将方法动态添加到类中。因此,当您加载jQuery UI库时,它会将dialog方法添加到jQuery类。

在方法内部,特殊变量this包含对其被调用的对象的引用。