1.prototype
2.extend
3.this的定位
一、prototype
$.fn.xxx = function(opt){}
是为jquery的prototype定义了函数,
这样, 任何一个jquery对象都可以使用这个成员函数,
//Jquery插件的一种方法
//你需要知道的是.prototype
二、extend
$.fn.extend()
在jquery中重新定义了extend的使用方法,
如果只有一个参数, 那么就是扩展本身, 即.fn, 也就是jquery的prototype, 这样, 和上面的prototype就一样了
还有一种写法就是
$.extend($.fn, {});
//这个extend不是一个参数,它作用是用后面的扩展前面的, 即用{}扩展了$.fn, 还是一个意思
三、this的定位
1.关于$(this)和this, 你关键还是要知道this表示的是什么:
- 如果this是一个dom元素 -> $(this)是一个jquery元素,
- 如果this是一个jquery元素 -> $(this)还是一个jquery元素,
//虽然你用==去判断两者是不同的, 但是他们内容都是一样的
2.关于this和$(this)还要注意一点
$('.abc').click(function(){});
//其中this是dom元素, $(this)是jquery元素,
而写插件的时候
由于是扩展prototype, 所以this是对象实例,
即this就是jquery对象, $(this)还是jquery对象,
他们虽然不是同一对象, 但是内容是完全相同的
总结几点:
- 函数里面的this 代表 函数的调用者
- jquery里面 this代表jquery对象
- 一般jq回调函数里都代表dom
- this代表当前的作用域
this是call()的第一个参数
函数被调用时,会作为第一个参数隐式的传入
谁调用函数,this就是谁
如果没人调用 ,this就是window