jQuery工具方法不仅可以给jQuery用也可以给原生用
1、$.type()
<script>
var a = []
console.log($.type(a))
</script>
type就是判断类型的一种方法,可以给原生JS用,它的好处在于它可以精确判断各种类型,比如上面的例子打出来的就是array。而typeof方法只能判断基本类型。
2、$.trim()
<script>
var a = ' string '
console.log('('+$.trim(a)+')')
</script>
$.trim()方法是去掉空格,如果不用这种方法会连空格都打出来。结果是(string)而不是( string )
3、$.inArray()
类似于原生数组中的indexOf()方法
<script>
var array = ['a','b','c']
console.log( array.indexOf('b') )
</script>
打出1,用jQuery的$.inArray()工具方法如下表示:
<script>
var array = ['a','b','c']
console.log( $.inArray('b',array) )
</script>
4、$.proxy()这个指定this的方法
<script>
function show(a,b){
console.log(a,b)
console.log(this)
}
$.proxy(show,document)(1,2)
</script>
$.proxy()这个方法接收的两个参数第一个是函数,另一个是this的指向。这段代码里$.proxy(show,document)已经是让show里的this指向了document了,但是它没有执行,所以要写成$.proxy(show,document)()这种形式才能调用和修改this。
$.proxy(show,document,1,2)
$.proxy(show,document,1,2)()
$.proxy(show,document)(1,2)
第一种是只修改this未调用函数,而后两种写法是等价的,都调用了函数,传参的方式也都对。而且,在里面进行传参就可以作为事件委托的执行函数存在。
示例如下:
<script>
function show(a,b){
console.log(a,b)
console.log(this)
}
$(button).click($.proxy(show,document,1,2))
</script>
打出来的结果是1,2,document
再看一个例子:
<script>
var a = {
content: '111',
test : function(){
$('div').text(this.content)
}
}
var b = {
content: '222',
test :function(){
$('div').text(this.content)
}
}
$('button').click($.proxy(a.test,b))
</script>
这个例子的意思就是说,当你点击了button,就会执行函数a.test,但是在a.test内的this已经被修改成了b这个对象,所以最后的结果就变成了<div>222</div>