jquery闭包的学习
jquery闭包的学习
漫天飞舞 发表于2年前
jquery闭包的学习
  • 发表于 2年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

摘要: jquery,闭包

在写好Jquery闭包后,也可以叫做jquery小插件。后面的js代码只要$.方法名。就可以调用你的方法。

在这里,写一个两个数加减乘除运算的闭包函数

首先,写一个claNum.js

代码如下:

(function($){
    // 定义一个对象
    function claNum()
    {
        this.num1;
        this.num2;
        this.result;
        this.type;
        this.fun;
    }
    // 申明调用
    $.claNum=function(options)
    {
        // 设定默认值
        var _extend={
                num1:0,
                num2:0,
                result:0,
                type:'+',
                fun:function(result){}// 这个是调用方法,定义,调用的时候,把结果传回去给 调用方
        }
        _extend=$.extend(true,_extend,options)
        {
            // 申明一个计算对象
            var cla=new claNum();
            // 进行数据的赋值。 把传参,传给这个对象。
            // 注意,是默认对象的值。因为调用的时候,系统已经把参数赋值给默认对象了
            cla.num1=_extend.num1;
            cla.num2=_extend.num1;
            cla.type=_extend.type;
            cla.fun=_extend.fun;
            // 调用初始化的方法,注意,这是一个方法。用来处理 逻辑模块
            cla.init();
        }
    }
    // 这是初始化的方法,负责处理,逻辑模块
    claNum.prototype.init=function()
    {
        // 申明为当前对象
        var obj=this;
        //这是代码逻辑
        if(obj.type=='+')
            {
             obj.result=obj.num1+obj.num2;
            }else if(obj.type=='-')
            {
                 obj.result=obj.num1-obj.num2;
                }
            else if(obj.type=='*')
            {
             obj.result=obj.num1*obj.num2;
            }else if(obj.type=='/')
            {
                if(obj.num2!=0)
                    {
                 obj.result=obj.num1/obj.num2;
                    }else{
                        alert('运算错误:被除数不能为0');
                    }
            }else{
                alert('很抱歉,暂时不支持此类运算');
            }
        //注意,这个方法的处理。因为计算只要返回一个结果,所以,返回这个结果值就行。交给 调用方的方法处理
        obj.fun(obj.result);//就是这么一句,不是 obj.fun=function(data){};
    }
})(jQuery);//结尾加上 (jQuery) ;大小写千万注意,第二个字母大写,其它小写


怎么调用呢?

在页面上引用

<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>//这个是jquery对象插件

 <script type="text/javascript" src="js/claNum.js"></script>//这个是你定义的闭包js
   <script type="text/javascript" src="js/index.js"></script>//这个是你目前所在的js

然后在index.js

$.claNum({  //调用你申明的闭包方法
    num1:5,  //参数
    num2:10,
    type:'+',
    fun:function(data) //参数,data是闭包处理后,返回的值
    {
        console.log('计算结果是:'+data)
    }
})





共有 人打赏支持
粉丝 2
博文 3
码字总数 2409
×
漫天飞舞
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: