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. 此处放失败后执行的代码
}
});