js基础

数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建数组,下标0开始
var arr=new Arry();
//js的数组不要求同一类型,什么都可以放
var arr=[];
//数组长度,length不光可以查,还可以改数组长度
arr.length();
//向最后位添加
arr[arr.length]=a;
//向前添加多个元素,返回数组长度
arr.unshift();
//添加多个元素,返回数组长度
arr.push();
//删除最后一个元素,返回删除元素
arr.pop();

遍历数组

1
2
3
//for循环遍历略,js提供了for-each,IE8以上使用
arr.forEach(function(item,index,object){
});

对象

js的对象声明

1
2
var obj =new Object();
var obj ={};

要添加对象属性的时候直接赋值就行,对象的属性也可以是个函数,即方法

1
2
3
4
5
obj.name="";
var obj ={name:""};
obj.hello(){
console.log("hello");
}

调用对象

1
obj.name;

删除对象属性

1
delete obj.name;

更常见的操作是以[]来操作

1
2
3
var a=1;
var obj =new Object();
obj[a];

检查obj是否有某属性

1
a in obj;

js的对象是地址传递,对象存储在堆空间种;其他数据类型是值传递,存储在栈中

计较两个基本数据类型的时候比较的是值,引用对象是比较地址

tyorof可以显示数据类型

枚举对象for in 语句

1
2
3
for(var n in obj){
console.log(n+":"+obj[n]);
}

回收对象(设为空即可,浏览器会自动回收垃圾)

1
obj=null;

在js中有三种对象,原生对象(js自带),宿主对象(浏览器环境),自定义对象(自建)

DOM

Document Obiect Model文档对象模型,JS通过DOM来对HTML文档进行操作

节点

DocumentType:doctype标签(比如<!DOCTYPE html>)。

Element:网页的各种HTML标签(比如<body>、<a>等)。

Attribute:网页元素的属性(比如class="right")。

Text:标签之间或标签包含的文本。

Comment:注释。

DocumentFragment:文档的片段。

方法 说明
document.getElementById() 通过id获取元素
document.getElementsByTagName() 通过标签名获取元素
document.getElementsByClassName() 通过class获取元素
document.getElementsByName() 通过name获取元素
document.querySelector() 通过选择器获取元素,只获取第1个
document.querySelectorAll() 通过选择器获取元素,获取所有
document.createElement() 创建元素节点
document.createTextNode() 创建文本节点
document.write() 输出内容
document.writeln() 输出内容并换行

详见DOM模型

函数

函数声明

1
function a (){}

break跳出当前循环

return结束当前函数并返回值

内部函数

1
(function a (){})()

表示第一个括号内的函数是个整体,然后他本身作为一个函数名立即调用

构造函数

1
2
3
4
5
6
7
8
9
function Person(name,age){
this.name =name;
this.age = age;
this.prototype.fun(){
console.log("prototype静态方法");
}
}
var per =new Person();
console.log(per);

this函数的上下文,谁调用this指向谁,在构造函数中,指向实例

call函数和apply函数可以改变this作为实例对象

call(obj,a)方法可以传递实参

apply(obj,[])方法需要将实参封装到数组中传递

1
2
//使用instanceof检查某个对象是不构造函数的实例
hansOwnProperty()//检查对象自身是否含有属性

参数列表,所有传递的实参都会在arguments中保存