Object
在通过对象字面量定义对象的时候,并不会调用
Object
函数 详情见此在js中可以使用
方括号
表示法来访问对象的属性,使用时应该将要访问的属性以字符串
的形式放在方括号中,优点如下:- 可以通过变量来访问属性
如果属性中包含会导致语法错误的字符,或者属性名使用的是关键字或者保留字,也可以使用方括号
1
person["first name"] = 'zhu';
通常,除非必须使用变量访问属性,否则我们一般用点表示法
Array
- 使用对象的字面量同样不会调用
Array
的构造函数,原因同上 - 可以使用数组的
length
属性,从数组的末尾移除或者增加项1
2
3var colors = ['r','y','b'];
colors.length = 2;
console.log(colors[2]) //undefined
检测数组
- 使用
Array.isArray()
来检测是否为数组,不管在不在全局执行环境中创建
数组方法
join()
: 以不同的分隔符来连接数组的每一项成为字符串push()
: 在数组的最后添加项,并返回修改后的数组的长度pop()
: 从数组的末尾移除最后一项,并返回移除的项shift()
: 移除数组的第一项,并返回该项unshift()
: 向数组的前端添加任意个项,并返回新数组的长度reverse()
: 反转数组项的顺序,返回反转后的新数组sort()
: 接受一个比较函数,函数接受两个参数,如果第一个参数应位于第二个之前则返回一个负数,如果两个相等,返回0,反之返回一个正数concat()
: 先创建一个数组的副本,然后将接受到的参数添加到副本的末尾,并返回最新的数组,不改变原来的数组slice()
: 基于当前数组中的一个或多个项创建一个新数组,接受一个或两个参数,即要返回项的起始和结束位置,不影响原数组splice()
: 会改变原来的数组- 删除:可以删除任意数量的项,指定两个参数:
要删除的第一项的位置和要删除的项数
- 插入:三个参数:
起始位置,0(要删除的项),要插入的项
- 替换:三个参数:
起始位置,要删除的项,要插入的任意数量项
- 删除:可以删除任意数量的项,指定两个参数:
indexOf()/lastIndexOf()
: 接受两个参数:要查找的项和(可选)表示查找起点未知的索引
,使用全等来比较every()/filter()/forEach()/map()/some()
: 迭代方法,接受两个参数:要在每一项上运行的函数(三个参数:该数组的每一项,索引,该数组)以及(可选)运行该函数的作用域对象——影响this
的值,都不会修改数组中包含的值- every: 对数组的每一项运行给定的函数,如果该函数对每一项都返回true,就返回true
- filter: 对数组的每一项运行给定的函数,返回该函数会返回true的项组成的数组
- forEach: 对数组的每一项运行给定的函数,没有返回值
- map: 对数组的每一项运行给定的函数,返回每次函数调用的结果组成的数组
- some: 对数组的每一项运行给定的函数,如果该函数对任一项返回true,就返回true
reduce()/reduceRight()
: 会迭代数组的所有项,最后构建一个最终返回的值,两个参数:一个在每一项上调用的函数(4个参数:前一个值,当前值,项的索引,数组对象。这个函数返回的任何值都会作为第一个参数传递给下一项,第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个是数组的第二项)和(可选)作为归并基础的初始值。- reduce: 从第一项开始,逐个遍历到最后
- reduceRight: 从最后一项开始向前遍历
Date
1.Date.parse()
: 接受一个表示日期的字符串参数,返回相应的毫秒数
- ‘月/日/年’ / ‘月.日.年’ / ‘月*日*年’
- ‘英文月名 日,年’ 如`January 12,2016`
- ‘英文星期几,英文月名 日 年 时:分:秒 时区’ 如:`Tue may 25 2016 00:54:08 GTM-0700`
- ‘扩展格式 YYYY-MM-DDTHH:mm:ss:sssZ’
Date.UTC()
: 返回毫秒数,参数分别是年份,基于0的月份,月中的哪一天(1-31),小时数(0-23),分钟,秒,毫秒。只有年和月是必须的,如果没有天数,默认天数为1,其他统统为0.var y = new Date(Date.UTC(2016,5))
var all = new Date(Date.UTC(2015,5,3,01,01,08))
Date.now()
: 返回调用这个方法时的日期和时间的毫秒数(在不支持此方法的浏览器中,使用+
操作符将Date对象转换为字符串同样有效果)var d = +new Date()
getTime()
: 返回表示日期的毫秒数setTime(毫秒)
: 以毫秒数设置日期,会改变整个日期getDate()
: 返回日期月份中的天数getDay()
: 返回日期中星期的星期几(0代表星期日);
RegExp
- 元字符需要转义:
( [ { \ ^ $ | ) ? * + . ] }
- RegExp构造函数的模式的参数是字符串,所以在某些情况下要对字符进行双重转义,所有元字符必须双重转义
/\[bc\]at/ "\\[bc\\]at"
/\.at/ "\\.at"
RegExp实例属性
source
: 正则表达式的字符串表示,按照字面量形式global
multiline
ignoreCase
lastIndex
: 表示开始搜索下一个匹配项的字符位置,从0开始
实例方法
exec()
test()
Function
- 函数名仅仅是指向函数对象的指针
- 没有重载
- 函数声明提升
- 函数作为参数传入也可以返回
函数内部属性
arguments : 有一个
callee
属性,指向拥有这个arguments对象的函数1
2
3
4
5
6function f(num){
if(num<=1)
return 1;
else
return num * arguments.callee(num-1)
}函数对象属性
caller
: 保存着调用当前函数的引用1
2
3
4
5
6
7
8function outer(){
inner();
}
function inner(){
alert(inner.caller)
//alert(arguments.callee.caller)
}
outer(); //弹出outer()的源码 outer调用了inner
函数的属性与方法
length
: 返回函数希望接受的命名参数的个数prototype
: 不可枚举,for-in 循环不到call()/apply()
bind()
: 创建一个函数的实例,其this值会绑定到传给bind()函数的值1
2
3
4
5
6
7window.color = 'red';
var o = { color : 'lime' };
function say_color(){
alert(this.color)
}
var obj = say_color.bind(o);
obj(); //lime
Number
toFixed()
: 按照指定的小数位返回数值的字符串表示(会四舍五入)toExponential()
: 返回以指数表示法表示的字符串形式toPrecision()
: 会返回以上两种的一种,接受一个参数,即表示数值的所有数字的位数,不包括指数部分
##String
charAt()
: 以单字符的形式返回给定位置的字符,接受位置的数值参数charCodeAt()
: 得到字符的编码concat()
: 连接字符串slice()/substr()/substring()
: 截取字符串,substr(开始位置,截取个数),substring()会把所有的负值转换为0,而且会将小的数作为开始位置indexOf()/lastIndexOf()
: 返回搜索给定的子字符串的位置trim()
: 删除前置和后置空格toLowerCase()/toUpperCase()
match()/search()/replace()
split()
: 两个参数,第二个为指定返回的数组的大小localeCompare()
: 比较两个字符串,以字母表来排fromCharCode()
: 接受一个或多个字符编码,并返回一个转换后的字符串