为什么 jquery 的 extend 方法无法在扩展中获取到传入的链式的参数 this?
資深大佬 : mostkia 0
最近在写 jq 的插件时,尝试这样使用以下的结构,发现无论如何都无法获取到 jquery 的链上传递过来的 this:
//扩展 jq $.fn.extend({ newFun: { Fun_A: function(){ console.log(this); }, Fun_B: function(){ //更多的同级方法 } } }); //执行时 $().newFun.Fun_A(); //结果没有拿到$入口的参数 {Fun_A: ƒ}
然而使用以下代码时,则可以获取到这个$(‘div’)传入的参数,
//扩展 jq $.fn.extend({ newFun: function(){ console.log(this) } }); //执行时 $('div').newFun(); //结果拿到了参数 init(3) [div#imgsgls, div#imgs2gls, div, prevObject: init(1), context: document, selector: "div"]
想想也不奇怪,this 本身就是根据环境不断变化的,但我需要$()里面传入的参数 有什么办法能获得吗?是我忽略了手册上的东西,还是说原本 jq 设计就无法获取到这个参数的呢? 因为以前都是直接调用内置的方法,没自己写过扩展,没想到第一次写就遇到困难了。网上也查了资料,似乎没有相关的信息,是我写法太刁钻了吗?菜鸟,汗颜,希望 v 友不吝啬赐教
大佬有話說 (4)