首先抱歉模糊的标题;想不出更恰当的措辞。我对Javascript和Web编程相对较新(尽管是.NET桌面编程的季节)。我一直在JS中反复查看以下编码模式,特别是对于jQuery UI等库函数:
$("#MyDiv").dialog({ ... });
我的问题是(像C#程序员一样思考),$("#MyDiv")
的类型是什么? dialog()
如何成为这种类型的成员?我可以看到dialog()
在jQuery UI库中定义,可以动态附加到任何对象。这里的魔力是什么?什么是C#相当于此;扩展方法?
另外,有没有办法在这个“附加”函数中引用调用对象?
答案 0 :(得分:2)
以下是一个快速细分:
$("#MyDiv").dialog({ ... });
$
是一个功能。虽然它看起来像一个特殊的符号,但它只是一个简单的旧javascript函数。"#MyDiv"
并创建并返回一个jQuery对象。.dialog()
的方法,方法是将其添加到jQuery对象的原型(jQuery使用的扩展机制)。.dialog()
部分正在调用刚刚创建并由前一个函数返回的jQuery对象的.dialog()
方法。按顺序步骤:
$
函数并将"#MyDiv"
选择器参数传递给它。$
函数创建一个jQuery对象并查找该选择器并存储与该jQuery对象中的该选择器匹配的所有DOM对象。$
函数返回这个新的jQuery对象。.dialog()
的方法,当找到该方法时,就像在obj.method()
中那样在该对象上执行。.dialog()
方法查看调用它的jQuery对象(this
指针设置为)并查看传递给.dialog()
方法的参数并相应地执行操作答案 1 :(得分:2)
$("#MyDiv")
返回一个jQuery对象,dialog
是jQuery类的一个方法。
与C ++等语言不同,Javascript允许将方法动态添加到类中。因此,当您加载jQuery UI库时,它会将dialog
方法添加到jQuery类。
在方法内部,特殊变量this
包含对其被调用的对象的引用。