this相关


1.prototype
2.extend
3.this的定位


一、prototype

$.fn.xxx = function(opt){}

是为jquery的prototype定义了函数,
这样, 任何一个jquery对象都可以使用这个成员函数,
//Jquery插件的一种方法
//你需要知道的是.fn = jQuery.prototype =.prototype

二、extend

$.fn.extend()

在jquery中重新定义了extend的使用方法,
如果只有一个参数, 那么就是扩展本身, 即.fn.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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 114,839评论 24 450
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,853评论 2 17
  • this 相关问题 1: apply、call 、bind有什么作用,什么区别 apply执行一个函数,传入函数执...
    蛋黄肉阅读 308评论 0 0
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,190评论 2 19
  • 尝试着想要去影响他人的思维和行动毫无疑问这和时间一样古老,但是操纵没有成为一种科学知道在20世纪初,当心理学教授L...
    王钰榕阅读 254评论 0 1