老生长谈的$.extend()方法

Posted 闵先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老生长谈的$.extend()方法相关的知识,希望对你有一定的参考价值。

jq的extend()是jq插件扩展很重要的部分,到这里证明是可以自己在jq的基础上,分为两种方法去扩展或开发,为jq本身添加一个方法,可以理解成扩展静态方法和自定义方法。

今天有看到一篇帖子,对这部分的理解十分独到,特意来分享一下。

首先:$.extend({})

用这个方法给jquery本身增加一个hello的方法;

<script type="text/javascript">
$(document).ready(function (){
    $.extend({
    hello:function(){alert("hello world!")},
    });
    $("p").click(function(){
        $.hello();
    })
    })
</script>

ps:给jquery新建了一个$.hello(),然后绑定给p元素一个点击事件,点击p元素就可以弹出对话框,hello world! 这只是一个简单的例子还可以去定义更多的静态方法给jquery。

其次:$.fn.extend({})

用这个方法给jquery对象添加一个新的方法;

<script type="text/javascript">
$(document).ready(function (){
    $.fn.change = function(){
        $(this).css("background","red");
        };
    $("p").click(function (){
        $(this).change();
        })
    })
</script>

ps:首先用$.fn.extend({}),添加一个新的名为change()方法,然后还是给P元素绑定一个新的方法,$(this).change(),单击p元素是背景颜色会变成红色。

可以简单的对比一下,这两种方法的区别到底在哪里:

  • 第一种$.extend()方法,使用时需要带着jq的标注$.hello();而$.fn.extend()方法使用时绑定在对象上$(this).change();
  • 第一种方法是扩展一个jq方法,第二种是为jq对象扩展一个方法;
  • 可以把第一种方式看成jq的合并数组的工具函数,第二种可以是一种操作方法,类似dom操作的一些方法也可传递参数;

以上是关于老生长谈的$.extend()方法的主要内容,如果未能解决你的问题,请参考以下文章

阿里老生长谈,安于现状35愈发焦灼...聊一聊入美团的测试职业发展职业经验

数组去重

常见slave 延迟原因以及解决方法

CSS-div居中

Net操作Excel(终极方法NPOI)

网络丢包的四大原因和修复方法(转他人文章)