引用类型是一种数据结构,描述了一类对象所具有的属性和方法。它具有以下几种形式:
Object类型:
1.创建Object实例的方法:
a. new操作符
var person = new Object();
person.name="gly";
b.对象字面量
var person={
name:"gly"
}
2.访问对象属性方法:
a.点表示方法(一般性方法)
person.name
b.方括号表示方法(当属性为变量时可以采用该方法)
person["name"]
Array类型
1.创建数组
a. Array
var colors=new Array();
b. 数组字面量
var colors=[1,2,3]
2.检测数组:Array.isArray(value)
3.栈方法:push() pop() //在尾部加入删除
4.队列方法:shift() push() //shift() 在头部删除
反队列方法:unshift() pop() //unshift()在头部加入
5.重排序方法:
a.反转数组reverse()
b.排序sort() //注意:sort()方法比较的是字符串,对于数值型会排序错误,并且会直接修改原数组
字符串排序解决方法:加入compare()函数进行比较
6.操作方法:
a.创建副本以及合并concat()
可以创建原数组的副本并且将新添加的放到副本中
b.切割数组中的一部分slice()
c.大boss,最强大的方法,可以做删除、插入、替换splice()
第一个参数为从第几个位置开始,第二个参数为要删除几项,第三个参数为需要加入的内容,最后更改的是原数组a,bcd是删除掉的数组。
7.查找元素位置方法:
a. indexOf()从前往后查:第一个参数为要查找的元素,第二个参数为查找的起始位置
b. lastIndexOf()从后往前查
8.迭代方法:
a. every() //每一项都符合返回true
b. some() //有一项符合就返回true
c. forEach() //无返回值
d. filter() //返回符合的原数据
e. map() //返回结果集
9.归并方法:
reduce() reduceRight()二者方向不同,这两个方法都会对数组进行迭代,四个参数
Date类型
创建方式:var now=new Date();
返回表示日期的毫秒数:
a. Date.parse()
b. Date.UTC()
获取现在的时间:Date.now()
RegExp类型
创建方式:
a. 字面量方法:
var pattern= /bat/i;
b.构造函数方法:
var pattern=new RegExp("bat","i");
g :全局模式
i :忽略大小写
m:多行模式
Function类型
函数名是一个指向函数对象的指针!!!!
1.创建方式:
a. 函数声明:
function sum(a,b){
return a+b;
}
b.函数表达式:
var sum=function(a,b){
return a+b;
};
c.Function构造函数
var sum=new Function("a","b","return a+b");
2.函数声明与函数表达式的不同:
函数声明提升
变量sum1提升,但是不会保存对函数的引用。
3.函数内部属性
- callee : 一个指针,指向拥有arguments对象的函数(arguments: 保存传入函数的所有参数,以数组形式保存)
function factorial(num){
if(num<=1)
return 1;
} else{
return num*arguments.callee(num-1); //argument.callee等价于factorial,好处:函数变名时对内部没有影响
}
}
- caller: 谁调用了该函数,返回它的引用
谁调用了b()??哦,是a(),那就返回a()的引用,也就是函数a()
4.函数属性和方法:
a. 在特定的作用域中调用函数: apply(作用域,参数数组)
call(作用域,参数)
用sayColor对象的方法作用于window和o对象上。(调用其他对象的方法)
b. bind():也是在特定的作用域中调用函数,只是bind方法会产生一个函数实例,只有对它调用时才会得到结果。所以如果想立即得到结果就用apply(),call(),如果不是,则使用bind().
基本包装类型:
Boolean Number String(注意与boolean number string不同)
基本包装类型:读取基本类型时,后台会创建一个基本包装类型对象,让我们可以对其调用方法操作数据。
在执行第二行代码时,后台会有以下过程:
a. 创建string类型的一个实例; var s1= new String("abcd");
b. 在实例上调用方法; var s2=s1.substring(s1);
c. 销毁实例。 var s1=null;
基本包装类型与引用类型的区别:生存期不同。(引用类型只有在脱离作用域后才会销毁,基本包装类型只有在执行该代码时才存在,一旦执行完毕就销毁)
构造函数(有new)与转型函数(无new)的不同:
String类型:
String对象提供了很多字符串操作的方法:
1.字符串拼接concat()
2.提取部分字符:slice() substring() substr()
3.确定字符串的位置indexOf() lastIndexOf()
4.删除前后的空格trim()
5.字符串大小写方法:toLowerCase() toUpperCase() toLocaleLowerCase() toLocaleUpperCase()
6.字符串匹配:match() search() replace() split()
7.字符串比较: localeCompare()
单体内置对象
在执行代码之前,这些对象已经存在了。
1.Global对象
eval()方法:解析字符串,会将字符串当作实际的代码执行
eval("console.log(1)") //1
eval()中创建的变量和函数不会被提升。
Global对象如何访问:在Web浏览器中,Global对象是window对象的一部分。
2.Math对象:提供完成计算的属性和方法。
最大最小max() min()
向上舍入向下舍入四舍五入 ceil() floor() round()
0-1随机数 random()
产生一个介于[low,up]之间的整数的函数:
function selectFrom(low,up){
var choices=up-low+1;
return Math.floor(Math.random()*8+2);
}