Object
- 创建Object 的实例
// 构造函数方式
var obj = new Object()
// 对象字面量方式
var obj = {
name:'nike',
age:12
}
Array 类型
1. 创建 Array 实例
var arr = []
var arr1 = new Array()
var arr2 = new Array(2) // 数组长度为2
var arr3 = new Array('a') // 只有一项的数组
var arr4 = [,,,] //不要这样,老版本浏览器与新版本结果不一致
2. 检测数组:
Array.isArray(value)
3. Array 内置方法
- toString()/toLocalString()/valueOf() 返回数组字符串的形式
- join(',') 返回以 ,分割的字符串形式
- push() 数组末尾添加,改变原数组
- pop() 数组末尾移除一项,改变原数组
- shift() 移除数组第一项,改变原数组
- unshift() 数组前端添加任意项,改变原数组
- reverse() 反转数组,改变原数组
- sort() 按指定函数的返回值排序,改变原数组
var arr = [3,5,1,4,6,2]
arr.sort(function(value1,value2){
// 返回负数 value1 在前,返回正数 value1 在后
return value1 - value2
})
//arr 是 [1,2,3,4,5,6]
- slice(1,3) 删除 位置1到位置2上的元素;不会改变原数组,返回删除的元素组成的数组
- splice() 删除+添加(先删除在添加),不会change old Arr,返回删除项组成的数组
var arr = [1,2,3,4]
arr = arr.splice(1,1,'a','b')
// arr: [1,3,4,'a','b']
- indexOf()/lastIndexOf() 返回查找项在数组的位置,没有则返回 -1 ;(比较时使用的是===)
- every() //对数组的每一项运行给的函数,如果每一项都返回true 则返回 true
- some() 如果有一项返回true 则返回true
- map() 返回结果组成的数组,是一个新数组
- filter() 返回函数返回为true 的项组成的数组
- forEach() 没有返回值,相当于对数组进行了一次循环
归并方法
- reduce() / reduceRight()
两个方法都接收两个参数:1. 在每一项上调用的函数,2. 作为归并基础的初始值
var arr = [1,2,3]
// 求 10 + arr 的和
var sum = arr.reduce((prev,cur,index,array)=>prev + cur,10)
// sum: 10+1+2+3 = 16
Date 类型
1. 创建 Date 对象
// 当前日前和时间
var now = new Date()
//根据特定日期和时间创建日期对象,必须传入表示该日期的毫秒数,为了简化计算,提供了两个方法
// 1. Date.parse('May 25,2004')
var someDate = new Date(Date.parse('May 25,2004'))
// 2. Date.UTC(2005,0,5,5,55,55)
var someDate1 = new Date(Date.UTC(2005,0,5,5,55,55)) //2005-1-5 05:55:55
// 上面可以简写,因为构造函数会后台调用对应获取毫秒数的方法
someDate = new Date('May 25,2004')
someDate1 = new Date(2005,0,5,5,55,55)
// 获取当前时间的时间戳也可以使用以下方法
var start = Date.now()
var end = +new Date()
2. 方法
日期格式化方法:
- toDateString() / toLocalDateString() 显示星期几、月、日和年
- toTimeString() / toLocalTimeString() 显示时分秒和时区
- toUTCString() 完整的UTC日期
获取与设置的方法
- getTime() 返回日期的时间戳
- setTime(毫秒)
- getFullYear()
- getUTCFullYear()
- setFullYear(年)
- setUTCFullYear(年)
其他类似
RegExp 类型
😈
知之为知之,不知为不知,是知也
创建
var expression = / pattern / flags;
// pattern(模式) :任何正则表达式
// flags(标志):
// - g: 全局
// - i: 不区分大小写
// - m: 多行模式
var pattern = new RegExp('[bc]at','gi')
方法
- test(text) 返回Boolean
- exec() 捕获组
var text = 'mom and dad and baby'
var pattern = /mom( and dad( and baby)?)?/gi
var matches = pattern.exec(text)
matches[0] //'mom and dad and baby'
matches[1] //' and dad and baby'
matches[2] //' and baby'
Function 类型
函数实际上是对象,每个函数都是 Function 类型的实例,同样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。
1. 创建
// 1. 函数声明方式
function functionName(argument){}
// 2. 函数表达式
var functionName = function(argument){}
2. 函数内部属性
在函数内部,有两个特殊的对象:arguments 和 this;arguments 是一个类数组,保持着函数传入函数的参数。arguments 还有一个 callee 属性,该属性指向拥有该 arguments 的函数。
函数也有一个callee 的属性,指向调用该函数的函数(即指向父函数)。
// 阶乘
function factorial(num){
if(num<=1)
return 1
else
return num * arguments.callee(num-1) //将回调函数与函数名解耦
}
//这样使用阶乘函数就不会因为函数名改变而报错
var trueFactorial = factorial;
factorial = function(){return 0}
trueFactorial(5) // 120
factorial(5) //0
3. 函数属性和方法
属性
- length : 表示函数希望接收的命名参数的个数
- prototype : 原型,这个属性是一个指针,指向一个对象(即原型对象)
方法:
- apply : 两个参数,第一个是作用域(函数将在这个作用域下执行),第二个是参数数组
- call:参数是逐个列举出来的
window.word = 'hello'
var o = {word:'bye'}
function say(){
alter(this.word)
}
say() // hello
say.apply(this) // hello
say.apply(window) //hello
say.call(o) //bye
say.apply(o) //bye
基本包装类型
有三类:Number、Boolean、String;主要说明一下String 的方法
String 类型的方法:
- chartAt(1) :位置1上的字符
- charCodeAt(0) : 位置0上字符的编码
- concat 连接
- slice
- substring(3,4)
- substr(3,1) : 第二个参数指定截取的个数
- indexOf('a') : 获取字符串的位置
- lastIndexOf('b',3)
- trim() 会创建字符串的副本,删除前置和后缀的所有空格,然后返回结果
- toUpperCase()
- toLowerCase()
- match() 与调用RegExp的exec() 方法等效
- search() 返回第一个匹配项的索引
- replace() 替换
- splice() 以指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中
单体内置对象
Global 对象
Global 对象上的属性:只列举最常见的几个
undefined | NaN |
Infinity | Object |
Array | Function |
Boolean | String |
Number | Date |
RegExp | Error |
Math 对象
Math 对象常用的的方法
min() | |
max() | |
ceil() | 向上舍入 |
floor() | 向下舍入 |
round() | 四舍五入 |
random() | 返回一个0<= x <1 的数 |