JavaScript知识总结(1)

1. JavaScript数据类型

列举几个:
字符串(String): var x = "temp";

数字(Number): var x = 1;

布尔(Boolean): var x = true;

数组(不是基本数据类型): 
    var cars = new Array();
    cars[0] = "car1";
    cars[1] = "car2";
    cars[2] = "car3";
    或
    var cars = new Array("car1", "car2", "car3");

对象(Object): 
    var person = {
        name: "Bill",
        id: 11111
    };

Null:
    cars = Null;

Undefined: 
    var x;

2. 闭包

找到一个讲解非常清晰易懂的博客:
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
简单理解一下:
    闭包就是指能够访问其他函数内部变量的函数,同时它使得这些变量始终保留在内存中。

3. 数组操作

同样指路博客:http://www.cnblogs.com/zhangzt/archive/2011/04/01/2002213.html

1. 创建
    new Array();
    new Array(size);//指定数组长度, 可以存储在指定长度之外,长度会随之改变

2. 元素访问
    arrayObj[i];//i为指定下标

3. 元素添加
    arrayObj.push(item1, item2, ..., itemN);//向数组末尾添加一个或多个元素,并返回新的长度
    arrayObj.unshift(item1, item2, ..., itemN);//向数组开头添加一个或多个元素,并返回新的长度

4. 元素删除
    arrayObj.pop();//删除最后一个元素并返回值
    arrayObj.shift();//删除第一个元素并返回值, 其他元素往前移
    arrayObj.splice(index, count);// 从指定下标删除指定数目的元素

5. 截取和合并
    arrayObj.slice(start, end);//以数组方式返回下标为start到end-1的元素, end没有指定时就返回start之后的元素

6. 字符串化
    arrayObj.join(seperator);//用seperator连接数组并返回字符串

7. 三个属性
1) length
    可以设置,当设置长度比原来小时,后面的部分就会被丢弃掉,当长度比原来大时, 新加的部分为"undefined"。
    使用new Array()创建的数组初始长度为0
2) prototype
3) constructor

4. JavaScript实现ajax

博客:http://www.cnblogs.com/u-lhy/p/7020340.html

function ajax(options){
    var options = options || {};
    var type = (options.type || "GET").toUpperCase();
    var dataType = options.dataType || "json";
    var params = formatParams(options.data)
    var xhr;
    // 1. 创建异步加载对象
    if (window.XMLHttpRequest){
        xhr = new XMLHttpRequest();
    }else if(window.ActiveObject){
        xhr = new ActiveObject('Microsoft.XMLHTTP');
    }

    // 2. 连接和发送
    if (type == "GET"){
        xhr.open("GET", options.url + "?" + params, true);
        xhr.send();
    }else if (type == "POST"){
        xhr.open("POST", options.url, true);
        //设置表单提交时的内容类型
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send();
    }

    // 3. 接收
    xhr.onreadystatechange = function(){
        if (xhr.readyState == 4){
            var status = xhr.status;
            if (status >= 200 && status < 300 || status == 304){
                options.success && options.success(xhr.responseText, xhr.responseXML);
            }else {
                options.error && options.error(status);
            }
        }
    }
}

//格式化参数
function formatParams(data){
    var arr = [];
    for (var name in data){
        arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
    }
    return arr.join("&");
}

调用函数
ajax({
    url: "",
    type: "POST",
    data: {name: "super", age: 20},
    dataType: "json",
    success: function(response, xml){
        // 4. 此处放成功后执行的代码
    }
    error: function(status){
        // 5. 此处放失败后执行的代码   
    }
});

你可能感兴趣的:(前端)