zoukankan      html  css  js  c++  java
  • javascript 利用匿名函数对象给你异步回调方法传参数

    先来创建一个匿名函数对象:

    /***
                 * 匿名函数
                 */
                var callChangeBtn=new function(bugBtn){
                    this.chage=function(json){
                        bugBtn.removeAttribute("disable");
                        bugBtn.innerHTML="立即购买";
                        console.log(json);
                    }
    
                }(event.target);
    

      用new构造一个匿名函数对象,该对象有两个作用:

    1、存了你要回调方法要使用的购买button element对象即你要传的数据。

    2、为该对象定义回调方法的实现。

    我们在ajax的回调方法要写成:

    success:callChangeBtn.chage
    

      

    参考资料1:

    function ManageCallback(TargetTag)
    {
        this.Success=function(Json){
            if(Json.Status==1){
                //alert(Json.Message);
                TargetTag.innerText = Json.Message;
                //window.location.reload();
            }else{
                TargetTag.innerText = Json.ErrorMessage;
                //alert(Json.ErrorMessage);
            }
        }
    }
     
     
    function Manage(ID, Type, Action, NeedToConfirm, TargetTag)
    {
        if(NeedToConfirm?confirm("确定执行该操作?"):true){
            TargetTag.innerText = "Loading";
            var CallbackObj=new ManageCallback(TargetTag); 
            $.ajax({
                url:WebsitePath+"/manage",
                data:{
                    ID: ID,
                    Type: Type,
                    Action: Action
                },
                cache: false,
                dataType: "json",
                type: "POST",
                success: CallbackObj.Success
            });
        }
    }
    

      参考资料2: javascript中匿名函数调用的多种方法

    方式1,调用函数,得到返回值。强制运算符使函数调用执行

    (function(x,y){
        alert(x+y);
        return x+y;
    }(3,4)); 
    

      方式2,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行

    (function(x,y){
        alert(x+y);
        return x+y;
    })(3,4);
    

      

    这种方式也是很多库爱用的调用方式,如jQuery,Mootools。

    方式3,使用void

    void function(x) {
          x = x-1;
          alert(x);
    }(9);
    

      方式4,使用-/+运算符

    -function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
    
    +function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
    
    --function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
    
    ++function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
    

      方式五

    方式5,使用波浪符(~)
    
    ~function(x, y) {
        alert(x+y);
       return x+y;
    }(3, 4);
    

      方式6,匿名函数执行放在中括号内

    [function(){
       console.log(this) // 浏览器得控制台输出window
    }(this)]
    

      方式7,匿名函数前加typeof

    typeof function(){
       console.log(this) // 浏览器得控制台输出window
    }(this)
    

      方式8,匿名函数前加delete

    delete function(){
       console.log(this) // 浏览器得控制台输出window
    }(this)
    

      方式9,匿名函数前加void

    void function(){
       console.log(this) // 浏览器得控制台输出window
    }(this)
    

      方式10,使用new方式,传参

    new function(win){
       console.log(win) // window
    }(this)
    

      方式11,使用new,不传参

    new function(){
        console.log(this) // 这里的this就不是window了
    }
    

      方式12,逗号运算符

    1, function(){
        console.log(this) // window
    }();
    

      方式13,按位异或运算符

    1^function(){
        console.log(this) // window
    }();
    

      方式14,比较运算符

    1>function(){
        console.log(this) // window
    }();
    

      

  • 相关阅读:
    20160405小结
    [HTML表格]在databases显示行的附加信息
    [django]django+datatable简单运用于表格中
    [django]django xlrd处理xls中日期转换问题
    烦!
    【数据库】Navicat Premium12远程连接MySQL数据库
    关于定义变量名为"name"的坑!!!
    【前端】前端面试题整理
    Firebug控制台详解
    什么是跨域?跨域解决方法
  • 原文地址:https://www.cnblogs.com/jifeng/p/6047571.html
Copyright © 2011-2022 走看看