jquery中$的疑惑
1:$("#xx")
2: $.get()
3: ${}
请帮我解释一下这三种方法的异同,如果能扩展更多更好,谢谢 展开
首先先纠正你一个错误, 第三种情况的写法是错误的, 在jq中没有这种用法, 在整个js中都没有这种用法, 我想你应该是用错了括号, $[],这应该才是你想问的情况.
先说在js中这三种用法的本质:
这是函数调用方式, 也就是说$这个变量其实是一个函数
这也是函数调用, 不过调用的不是$. 这一种情况就要把$理解成一个对象, 用json方式表示的话, 类似这个样子,{ get: function(){} }, 然后调用的就是$对象下的get这个方法.
第三种情况$[], 在js中获取对象的属性有两种方法, 第一种就像第二种情况中的用 "."来获取, 还有一种更加灵活的方式就是用[]来获取, 就和数组取元素的方法一样( 其实在js中数组也是一个对象 ), 所以就比如说第二种情况可以这样来写$[ 'get' ](); 然后我所说的更灵活的用法就是, 方括号中可以是变量, 同样用以上例子, var method = 'get'; $[ method ](); 这同样实现了第二种情况的调用.
然后是在jq中这几种情况的实际应用
$( '#xx' )这是jq选择器的核心, 获取页面上id='xx'的元素. 用面向对象( 这里对面向对象思想就不赘述, 请自行去了解了, 太多我也说不完 )的思想来说, 其实这个函数的调用是实例化了一个jq对象,然后返回的是jq对象本身, 这是一个类数组对象, 可以用数组的方法进行列举
$.get(); 这个是调用jq的静态( 简单点理解就是不受到实例化影响 )方法, 这里没有进行jq的实例化; 而这里的get是jq的ajax方法, 具体请自行查阅jq的api
$[] 这种情况就不用多说了, 在jq里如果有这种情况也就是访问静态变量的意思
我们使用的是jquery库,既然是一个库,那么就有他的一个标识,来表示你是在调用这个库中的方法。所以,我们使用 $('#selector')就标识是使用jquery的方法来定义一个DOM对象。
jquery库中封装了一些内置的方法(或函数),这些方法是可以直接使用的,和上面说的一样,我们要使用jquery中的内置方法,则可以使用 $.**这样的语法。
jquery库通常是不需要手动变动的,我们变动只是基于该库的一些方法,基于基于就是继承自这个库,或者依据这个库的一些基本方法。因此,我们在编写脚本或插件是也标注上$这个标识。如:
(function($){
/*插件内容*/
})(jQuery)
或
$(function(){
/*脚本块*/
});
等。
这里的$标识是可以使用其他标识替换的,也是可以让渡给其他js库的。
因此我们不妨说$就是一个jQuery标识。如果不引入jquery库,则使用$就可能会报错了。
我给你举个例子:
有时候我不用 jquery,用自己封装的js函数.
但根据jquery的思想,我会现写这么一个函数
function $(id){
return document.getElmentById(id);
}
$(id号).value 这么调用,懂了么?
那为什么$后面的格式不统一向我上面说的就有三种表达式,这样区分了什么?
$也可以换算成jQuery对象
我对这也不是很了解.
$.get{}的$应该是顶级对象
${}的$应该是jQuery对象.
可能理解有误.