51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1666|回复: 1
打印 上一主题 下一主题

jquery的extend和fn.extend

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-14 16:23:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    jQuery为开发插件提拱了两个方法,分别是:

    • jQuery.fn.extend(object);
    • jQuery.extend(object);

    jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。

    jQuery.fn.extend(object);给jQuery对象添加方法。

    fn 是什么东西呢。查看jQuery代码,就不难发现。

    1. jQuery.fn = jQuery.prototype = {
    2. init: function( selector, context ) {//.... 
    3. //......
    4. };
    复制代码



    原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。
    虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。

    jQuery便是一个封装得非常好的类,比如我们用 语句 $("#btn1") 会生成一个 jQuery类的实例。

    jQuery.extend(object); 为jQuery类添加添加类方法,可以理解为添加静态方法。如:

    1. <span style="box-sizing: inherit;">$.extend({
    2. add:function(a,b){return a+b;}
    3. });</span>
    复制代码


    便为 jQuery 添加一个为 add 的 “静态方法”,之后便可以在引入 jQuery 的地方,使用这个方法了,

    $.add(3,4); //return 7

    jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

    比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:
    Java代码

    1. <span style="box-sizing: inherit;">$.fn.extend({
    2.   alertWhileClick:function(){
    3.   $(this).click(function(){
    4.    alert($(this).val());  
    5.   });
    6.   }
    7. });</span>

    8. <span style="box-sizing: inherit;">$("#input1").alertWhileClick()</span>; //页面上为:<span style="box-sizing: inherit;"><input id="input1" type="text"/></span>
    复制代码


    $("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。

    真实的开发过程中,当然不会做这么小白的插件,事实上jQuery提拱了丰富的操作文档,事件,CSS ,Ajax、效果的方法,结合这些方法,便可以开发出更加 Niubility 的插件。


    $.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。
    如:
    Javascript代码

    1. <span style="box-sizing: inherit;">$.extend(settings, options);</span>

    2. //合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结果保存在setting中。
    3. Javascript代码
    4. <span style="box-sizing: inherit;">var settings = $.extend({}, defaults, options);</span>

    5. //合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。
    复制代码


    可以有多个参数(合并多项并返回)


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 22:09 , Processed in 0.063620 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表