2

先说对不起。因为我不知道这个问题是否有效。如果有人能解决我的疑问,我会很高兴。

基本上:调用如下方法有什么不同:

  1. 对象.方法名();

  2. $('#element').methodname();

两种方式都可以调用,但是两者之间有什么不同,其中标准使第一类和第二类方法。它在核心 javascript 中也可用吗?

如果我有一个函数,是否可以始终进行 2 种类型的方法调用?

任何人都可以提供一些很好的参考来正确理解吗?

提前致谢。

4

2 回答 2

2

第一种语法:

object.methodName();

表示要调用一个函数,methodName()该函数被定义为 的属性object

第二种语法:

$('#element').methodname();

说调用一个函数$()(为了使它工作)必须返回一个对象,然后调用methodname()该返回的对象。

你说“双向调用是有效的” - 所以大概你有一些类似这样的代码:

var myObject = $('#element');
myObject.methodname();

这种将$()函数结果存储在变量中的概念通常称为“缓存”jQuery 对象,如果您计划在该对象上调用很多方法,效率会更高,因为每次调用 jQuery$()函数时都会创建另一个 jQuery目的。

“它在核心 javascript 中也可用吗?” 是的,如果您实现返回对象的函数。也就是说,JS 支持这个(它必须支持,因为 jQuery 只是一个 JS 库)但它不会自动发生,你必须编写适当的函数代码。例如:

function getObject() {
   return {
      myMethod1 : function() { alert("myMethod1"); return this; },
      myMethod2 : function() { alert("myMethod2"); return this; }
   };
}

getObject().myMethod1().myMethod2();

在我看来,更深入地解释这个概念超出了 Stack Overflow 答案的范围——你需要阅读一些 JavaScript 教程。一旦您了解了 JS 基础知识, MDN 的 Working With Objects文章是一个很好的起点(可以说使用对象JS 基础,但显然我的意思是比这更基础的东西)。

于 2012-06-29T05:35:21.130 回答
1

差异非常微妙。

object.methodname();

这是 JavaScript 手头有对象的时候。

$('#element').methodname();

If you are using jQuery, you are asking jQuery to select the object that has the id of #element. After that you invoke the method on the selected object.

于 2012-06-29T05:35:38.477 回答