js中方法也是一个对象!方法名就是指向方法对象的变量名!
arr.sort(compare);注意!将方法作为对象传递时,仅使用方法名,后不加圆括号。
栈和队列:
什么是栈?后进的先出!(LIFO)
栈其实就是数组,只不过用一对儿方法模拟了栈的操作!
结尾入栈出栈:元素下标始终不变,最后一个元素始终最新
入栈:arr.push(值1,...),
出栈:var last=arr.pop();
开头入栈出栈:所有元素下标随入栈出栈操作而变化,第一个元素[0],始终最新
入栈:arr.unshift(值1,....)
出栈:var first=arr.shift()
队列:FIFO
入队列:arr.push(值1,...)
出队列:var first=arr.shift()
原始类型:数据保存在变量本地
引用类型:数据不保存在变量本地!保存在“堆”中。由地址指向实际数据
引用类型特点:可以保存多个数据,而且数据个数随时可变
包装类型:专门封装原始类型的数据,并提供数据常用操作的内置类型。
让原始类型的数据也可以像引用类型一样,拥有方法和属性。
string number boolean
var num=5.678;//原始类型
//num=new Number(num);//包装类型
console.log(num.toFixed(2));
//num=null;//释放包装类型对象!
创建字符串:
1. var str="...";//原始类型
2. var str=String("...");//原始类型,类型转换
3. var strObj=new String("...");//包装类型对象
转义字符: 代替字符串中的非打印字符:\n \t
如果字符串内容中包含和语法冲突的特殊字符,可用\转为普通字符
*字符串内容一旦创建,不可改变*
如果修改,都要创建新字符串,保存新结果,替换旧字符串
所有字符串API,都需要变量接收返回值!
str.length:返回str字符串中的字符个数
大小写转换:都转小写:str=str.toLowerCase()
都转大写:str=str.toUpperCase()
字符串类型底层其实都是用字符数组实现的。
获取指定位置字符:
var char=str.charAt(index);
在index位置的char
获取指定位置字符的unicode编号:
var num=str.charCodeAt(index);
字符串三大操作:
1.查找关键字 2.替换关键字 3.获取子字符串
查找关键字:
var index=str.indexOf("关键字");
返回关键字所在位置!*如果没找到,返回-1!*
indexOf:
懒:只找第一个关键字位置!
蠢:默认只能从位置0开始!
var index=str.indexOf("关键字",from);
from:开始查找的位置,从from开始向后查找
从最后一个字符,向前找:只要关键字离结尾近,就用last
var index=str.lastIndexOf("关键字",from);
from:开始查找的位置,从from开始向前查找
*返回的index完全相同!字符在数组中的下标是固定的!*
获取子字符串:
var subStr=str.slice(start,end+1)
str.substring(start,end+1) 用法同slice!
唯一差别:不支持负值作为参数!
str.substr(start,*count*)
以上三个方法省略第二个参数,默认都是取到结尾!
按规律分割字符串:var subs=str.split("分隔符"[,count])
String类型中,提供了专门支持模式匹配的API!
按模式*替换*关键字:str=str.replace(reg,"新值");
默认replace仅替换第一个关键字!
要想全局替换,要在模式中定义“g”
获得*所有*关键字的*内容*:
var kwords=str.match(reg);
只能取得关键字的内容,无法确定每个关键字的位置!
kwords.length:
找到的关键字个数!
*如果未找到,返回null!*
只要有可能返回null!都要先判断!=null,再处理!
var index=str.search(reg)和indexOf完全相同!
indexOf不支持模式查找!search其实是indexOf的模式查找版