2015-06-17 69 views
-8

我在下面的这段代码中挣扎。为什么他们在函数scrollDepth()之前使用前缀jQuery?当我删除前缀时会发生什么?为什么他们在函数名前使用前缀jQuery?

<script src="jquery.scrolldepth.min.js"></script> 
<script> 
jQuery(function() { 
    jQuery.scrollDepth(); 
}); 
</script> 
+11

*当我删除前缀时会发生什么?*当你做了什么? –

+1

@PraveenKumar jQuery是一个JavaScript库。这不是一个功能。 – ElGavilan

+6

@ElGavilan:这都是。这也是变量的名称,该变量持有对库主对象的引用。这是一种超负荷的词,现在我想到了。 – David

回答

2

scrollDepth是jQuery对象上的一个函数,所以它必须在jQuery对象上调用。 (该功能是this plugin,增加了功能的jQuery对象;它不是jQuery的本身的一部分。)

+2

可能是评论? –

+2

看起来像我们在我们中间的一个小人物 – jbutler483

+3

Downvote不是我的,但详细说明“jQuery函数”和“jQuery对象”是否会使这个答案更模糊。 –

1

在此行中:

jQuery.scrollDepth(); 

jQuery“前缀”,你叫它是具有scrollDepth函数的对象的名称。如果没有引用该对象,引擎将不知道该在哪里找到该函数。

并非所有函数都是全局函数(谢天谢地)。在面向对象的世界中,函数存在于特定的对象上。您需要引用该对象来调用其功能。

+0

***问题:**是jQuery OO吗?* –

+6

@PraveenKumar:OO是一个大帐篷。 JavaScript是OO(核心),jQuery使用JavaScript的OO功能,所以从这个意义上说,jQuery是OO。 –

+0

啊,@ T.J.Crowder谢谢你的澄清!所以jQuery是OO! ':D' –

3

您可能熟悉$符号jQuery。这实际上是一个别名jQuery对象。所以,我们基本上有一个对象卫生组织的名字是jQuery,它包含了我们在jQuery的

使用
jQuery.each = function(){...} 
jQuery.ajax = function(){...} 
jQuery.makeArray = function(){...} 

现在,scrolldepth是它扩展了的jQuery插件的所有API方法API类似于上面

jQuery.scrollDepth = function(){...} 

的办法,这就是为什么它被称为像jQuery.scrollDepth()

+0

哇......很好的解释! ':D' –

+2

@PraveenKumar,谢谢!但说实话,即时解释给自己比别人更多。他们说教学是最好的学习方式:) – AmmarCSE

+0

不,不,这是完全错误的。如果'scrollDepth()'是jQuery原型('jQuery.fn')的成员,那么它必须在jQuery对象上调用(例如'jQuery(“something”)。scrollDepth()'),而不是直接'jQuery'本身。 –

相关问题