跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 为什么 jquery 的 extend 方法无法在扩展中获取到传入的链式的参数 this?
未分類
12 4 月 2021

为什么 jquery 的 extend 方法无法在扩展中获取到传入的链式的参数 this?

为什么 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)

  • 資深大佬 : xiaoming1992

    $.fn.extend({
    * newFunc() {
    * * const that = this

    * * const funcA = function funcA() {
    * * * console.log(that === this)
    * * }

    * * return {
    * * * funcA: funcA.bind(that),
    * * }
    * }
    })

    用的时候就 $(“div”).newFunc().funcA() 吧

    PS 1202 年了怎么还用 jq…

  • 主 資深大佬 : mostkia

    @xiaoming1992 jquery 挺好用的,而且我写插件也是想间接的了解一下这玩意的设计思路,否则挂靠不上去我直接自己造个轮子不香嘛

  • 主 資深大佬 : mostkia

    @xiaoming1992 已解决问题,感谢

  • 資深大佬 : xiaoming1992

    @mostkia 嗯嗯,只是现在如果不让我用扩展运算符、箭头函数,让我手动添加 css -ms- 等前缀我肯定受不了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具