以下都是对象。
1、object类型
object是所有对象的基础,因此所有其他对象都有下列属性及方法:
constructor(构造函数):保存着用于创建当前对象的函数(如下面的Object())
hasOwnProperty:检查给定的属性在当前对象实例(不是原型)中是否存在
isPrototypeOf:检查传入的对象是否是当前对象的原型
propertyIsEnumberable:检查给定属性是否可以使用for-in来枚举。
toLocaleString:返回对象的字符串表示(与执行环境的地区对应)
toString:返回对象的字符串表示
valueOf:返回对象的字符串、数值或布尔值表示
创建object实例有两种方法:
var person=new Object();
person.age=12;
var person={
age:12,
name:"zhuzhu"
}
可以用person.name or person[“name”] 访问属性,方括号适用于访问用变量表示的属性如person[variable],variable=”name”或属性名中有空格等无法用.表示时。
2、array类型
数组中每一项都可以放置不同数据类型的数据,而且可动态调整,随着数据增加而增加。
var a=new Array();//定义
检测数组:
value instanceof Array或Array.isArray(value)(ES5)
alert(array)显示的是逗号隔开的数组中每个元素toString后的一个字符串。
数组方法:
栈方法(后进先出):push pop
队列方法(先进先出):push shift
unshift方法是在数组最前面加入任意项。
reverse反转数组。
sort()比较字符串,但可以传给它一个比较函数(返回0,1,-1)来比较大小。
concat(连接数组或数据)、slice(返回数组中间任意项组成的数组)、splice(可进行删除、插入、替换操作且会改变原始数组)
indexOf,lastIndexOf,返回需要查找的数据所在数组位置。
迭代方法:
every:对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true
some:对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true
filter:对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
forEach:对数组中每一项运行给定函数,无返回值
map:对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
例:
array.filter(function(item,index,array){
//这个function后的参数是固定的,第一个是数组每一项的值,第二个是下标,第三个就是数组。
return (item>2);
})
array.map(function(item,index,array){
return item*2;
})
归并方法:
reduce,reduceRight。区别在于向后或向前遍历。
reduce函数接收4个参数,其中prev表示前一个值(返回的下一个值也存在这个变量中),cur为第二个值。
arr.reduce(function(prev,cur,index,arr){
return prev+cur; //函数表示加和整个数组
})//如[1,2,3,4,5]第一次prev为1,cur2,然后prev3,cur3,接着prev6,cur4……
定义二维数组:
var data=Array();
for(var k=0;k<a;k++){
data[k]=Array();
for(var q=0;q<b;q++){
data[k][q]="";
}
}(a、b为数组大小)
3、date类型
var now=new date();
4、RegExp类型
用于支持正则表达式。
var expression=/ pattern / flags ;
主要方法:exec及test。
var text="i love u";
var pattern=/love/g;
var matches=pattern.exec(text);
matches.index/input;//index表示匹配项在字符串中的位置,input表示应用正则的字符串。
matches[index];//第index个匹配项。
5、function类型
函数也是对象,每个函数都是function类型的实例
函数名实际上是一个指向函数对象的指针。函数也可以当作值来使用。函数名仅仅是一个包含指针的变量而已
解析器率先读取函数声明然后读取函数表达式,所以声明无论在什么地方都可以(当然建议放在函数表达式之前)
函数内部有两个特殊对象:arguments和this。arguments包含传入函数的所有参数,arguments有一个callee属性,是指针,指向拥有此arguments的函数(用于消除耦合)。ES5中还规范了一个对象caller,用于保存调用当前函数的函数的引用。
this对象引用的是函数执行的环境对象。
函数的.length方法返回函数参数个数。
函数的两个非继承方法:apply和call。作用相同:在特定作用域中调用函数(相当于设置函数体内this的值),好处是对象不需要与方法有任何耦合关系,可分离。
function.call(this) //this就是调用函数的作用域
ES5还有bind方法,会创建有this作用域的函数。
var function1=function.bind(this);
function1();
函数的toString,valueOf等方法会返回函数源代码。
6、三个特殊的引用类型:Boolean、Number和String。
为便于操作基本类型值ES提供了这几个引用类型值。当读取一个基本类型值时,后台会创建一个对应基本包装类型的对象,从而让我们可以调用一些方法。
boolean的方法建议不使用
number的方法有:toString(几进制),toFixed(小数点位数),都是转化为字符串格式。
string的方法:1、字符方法(charAt、charCodeAt、string[i]),2、字符串操作方法(concat、slice、substr、substring)。3、字符串位置方法(indexOf)。4、删除空格方法 (trim)。5、大小写方法(toLowerCase、toUpperCase)。6、字符串模式匹配方法(match、search、replace、split)。7、localeCompare 比较字符串。8、fromCharCode将数字转化为字符串。
7、单体内置对象(Global和Math)
Global对象方法:URI编码方法、eval方法(参数为代码,可直接解释代码字符串,恶意代码注入)
属性:undefined、NaN、Infinity、Object、Array、Function……
Math方法:min,max,random,舍入(ceil、floor、round),