js常见问题

  • js 实现一个函数对javascript中json 对象进行克隆

var newObject = JSON.parse(JSON.stringify(oldObject));

  • js 实现一个函数 获得url参数的值
function getQueryString(name) { 
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 
    var r = window.location.search.substr(1).match(reg); 
    if (r != null) return unescape(r[2]); return null; 
} 
  • 取得函数最多传递的参数 直接调用arguments.length
var fun1 = function (p1, p2, p3) {
    alert('接收的参数长度为:' + arguments.length);
    //遍历传入的参数
    for (var i in arguments) {
        //使用索引的方式获取参数值
        console.log(arguments[i]); 
    }
}
alert('fun1的参数长度为:'+fun1.length);
fun1('a', 2, 'c');
  • 写一个function,清除字符串前后的空格。(兼容所有浏览器)
function trim(str) {
    if (str & typeof str === "string") {
        return str.replace(/(^s*)|(s*)$/g,""); //去除前后空白符
    }
}
  • 如何判断数据类型

typeof形式,可以判断function的类型;在判断除Object类型的对象时比较方便。
判断已知对象类型的方法: instanceof,后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

  • 异步编程?
    • 方法1:回调函数,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间高度耦合(Coupling),流程会很混乱,而且每个任务只能指定一个回调函数。

    • 方法2:时间监听,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦合”(Decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运行流程会变得很不清晰。

    • 方法3:发布/订阅,性质与“事件监听”类似,但是明显优于后者。

    • 方法4:Promises对象,是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口。
      简单说,它的思想是,每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。

  • 降维数组
var arr=[[1,2],[3,4]];
function Jw(obj){
     return Array.prototype.concat.apply([],obj);
}
Jw(arr);
  • js 实现 ajax 请求完成即执行
function(url, fn) {
     var obj = new XMLHttpRequest(); // XMLHttpRequest对象用于在后台与服务器交换数据
     obj.open('GET', url, true);
     obj.onreadystatechange = function() {
            if(obj.readyState == 4 && obj.status == 200||obj.status == 304) {
               loading.style.display = "none"
            } else {
               alert("不能点击,哈哈哈!");
            }
       };
obj.send(null);
} 
  • jquery的$.ajax()方法
$.ajax({
        url:'http://192.168.31.227/sfytjjk/wdaj/wdla.php',
        type:"post",
        timeout:5000,
        async:true,
        cache:true,
        data:"user_id=12&page=0",
        dataType:"json",
        contentType:"application/x-www-form-urlencoded",
        beforeSend:function(XMLHttpRequest){
            console.log(this);
            $("#inp").val("正在获取数据..."); 
        },
        success:function(data){
            console.log(data);
            $(".display").html("获取到的数据:</br>");
            $(".display").append("总条数:"+data.data.all_count);
            $("#inp").val("点击获取数据"); 
        },
        complete:function(XMLHttpRequest,textStatus){
            if(textStatus=='timeout'){
                var xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");
                xmlhttp.abort(); 
                $(".box").html("网络超时!");
        }
            $("#inp").val("点击获取数据"); 
        },
        error:function(XMLHttpRequest, textStatus){
            console.log(XMLHttpRequest);  //XMLHttpRequest.responseText    XMLHttpRequest.status   XMLHttpRequest.readyState
            console.log(textStatus);
            $(".box").html("服务器错误!");
        }
    });
  • jquery的$post()方法
$.post("check.php",{},function(data){
        jj=data;
        $("#tname").html(data);
    }).success(function() { 
        alert("second success"); 
    }).error(function(a) {            
        alert("error"+a.ResponseText);
        alert(json_last_error ()); 
    }).complete(function() { 
        alert("complete"); 
    });
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值