1、Object类型
① 方括号语法的主要优点是可以通过变量来访问属性。
2、Array类型
① 数组使用toLocaleString()和toString()返回以逗号分隔的字符串,分别调用每一项的toLocaleString()和toString();而valueOf()返回的还是数组; join(String x)方法可以返回不同分隔符分隔的字符串。
② 栈和队列方法:
push() 添加任意个项到末尾,返回修改后的数组长度;
pop() 从末尾移除最后一项,返回移除的项。
unshift() 添加任意个项到开头,返回修改后的数组长度;
shift() 从开头移除第一项,返回移除的项。
③ 重排序方法:reverse() 和 sort()
sort()不加参数比较的是字符串;可以接收比较函数作为参数arr.sort(compare);按参数列表顺序排,返回负数。
④ 多个数组操作方法:
concat():基于当前数组,把参数中的值或数组的每一项都添加到末尾形成新数组。 --- 不影响原数组
slice():接收一个或两个参数,即返回项起始位置和结束位置(返回项不包含结束位置) --- 不影响原数组
splice():接收两个或三个(及以上)参数,第一个参数为起始位置,第二个参数为要删除的项数,第三个(及以上)的参数为要插入的项。返回值为被删除的项/[]。
⑤ 位置方法:indexOf() 和 lastIndexOf()
⑥ 迭代方法:
每个方法都有两个参数:在每一项上运行的函数和(可选的)运行该函数的作用域对象(影响this的值)
在每一项上运行的函数的参数依次为:当前项,当前项索引,数组对象(item, index, array)
⑦ 归并方法:reduce() 和 reduceRight()
两个方法都有两个参数:在每一项上运行的函数和(可选的)作为归并基础的初始值。
在每一项上运行的函数的参数依次为:前一个值,当前项,当前项的索引,数组对象(prev, cur, index, array)
3、Date类型
new Date():新创建的对象自动获得当前日期和时间
new Date(Milliseconds):特定日期和时间
Date.parse(String):尝试解析字符串返回毫秒数
Date.now():调用这个方法时的日期和时间的毫秒数
getTime()、getFullYear()、getMonth()……
setTime()、setFullYear()、setMonth()……
4、RegExp类型
① ECMAScript通过RegExp类型来支持正则表达式;RegExp类型表示的正则表达式由模式和标志组成。
② 模式和标志:
模式:可以是任何正则表达式
标志: g(全局)、i(不区分大小写)、m(多行模式)
③ 两种表达形式:
字面量:let pattern1 = /at/g;
构造函数:let pattern2 = new RegExp("at", "g");
区别:字面量始终共享同一个RegExp实例,构造函数创建的每一个都是新实例。
④ 实例属性和方法:
属性:
方法:
1)exec()——为捕获组而设计
var matches = pattern.exec(String);
返回值第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。在pattern设置全局标志的情况下,每次调用 exec()则都会在字符串中继续查找,返回新匹配项;不设置全局模式则每次都返回第一个匹配项。
2)test()——判断是否匹配:pattern.test(String);
⑤ 构造函数属性
多达 9个用于存储捕获组的构造函数属性,访问这些属性的语法是 RegExp.$1、RegExp.$2……RegExp.$9,分别用于存储第一、第二……第九个匹配的捕获组。
5、Function类型
① 函数是对象,函数名是指针;函数没有重载。
② 函数声明和函数表达式的区别:函数声明有函数声明提升。
③ 函数的内部属性:arguments 和 this
arguments:
作用:保存函数参数
arguments的callee属性:指向拥有这个arguments对象的函数
this:引用的是函数据以执行的环境对象
④ 函数对象的属性:
caller——调用当前函数的函数的引用(全局作用域中值为null)
length——函数希望接收的命名参数的个数
prototype——保存函数的所有实例方法的真正所在
⑤ 函数对象的方法:
apply(绑定到的作用域 , 参数数组)
call(绑定到的作用域 , 参数…)
bind(绑定到的作用域,参数...)——创建返回一个函数的实例
6、基本包装类型
① 三种基本包装类型:Boolean、Number、String
② 访问基本类型值:访问布尔值、数字和字符串等基本类型值时,后台会创建一个对应的基本包装类型的对象,从而可以调用一些方法,调用完之后销毁这个对象。
③ 基本包装类型是引用类型,基本包装类型的实例是对象,所有基本包装类型的实例转换为布尔值都是 true。
typeof (new String('123')); // object
typeof '123'; // string
new Boolean(false) && true; // true
④ 使用 new 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。转型函数创建的是基本类型值。
⑤ Number基本包装类型的方法:
toFixed(number):按照指定的小数位返回数值的字符串表示。
toExponential(number): 按照指定的小数位返回以指数表示法(也称 e表示法) 表示的数值的字符串形式。
toPrecision(number):按照指定的小数位采用合适的规则返回数值的字符串表示。
⑥ String基本包装类型的方法:
实例方法:
charAt(index) 和 charCodeAt(index)
concat(string):返回拼接的字符串,和“+”操作符相同。
slice(begin, end):返回 begin ~ end 之间的字符串(不包含end)。
substr(begin, count):返回从 begin 开始的 count 个字符。
substring(begin, end):返回 begin ~ end 之间的字符串(不包含end)。
indexOf() 和 lastIndexOf()
trim():返回删除了前置及后缀所有空格的字符串的副本。
toLowerCase()、toLocaleLowerCase()、toUpperCase()和 toLocaleUpperCase()
match(pattern)
search(pattern)
replace(RegExp/string, string/function):字符串替换
splict():基于指定的分隔符将一个字符串分割成多个字符串
静态方法:
fromCharCode(code1, code2……):从编码转换为字符串
7、单体内置对象
① 内置对象:由 ECMAScript实现提供的、不依赖于宿主环境的对象,这些对象在 ECMAScript程序执行之前就已经存在了。(如Object、Array、String、Function等)
② 两个单体内置对象:Global 和 Math
Global:所有在全局作用域中定义的属性和函数,都是 Global 对象的属性
1)URI编码方法: encodeURI()和 encodeURIComponent()、 decodeURI()和 decodeURIComponent()
2)eval()方法:
就像是一个完整的 ECMAScript解析器,它只接受一个参数,即要执行的 ECMAScript(或 JavaScript) 字符串,被执行的代码具有与该执行环境相同的作用域链。
在 eval()中创建的任何变量或函数都不会被提升,因为在解析代码的时候,它们被包含在一个字符串中;它们只在 eval()执行的时候创建
3)Web 浏览器都是将这个Global全局对象作为 window 对象的一部分加以实现的
Math:
1)min() 和 max() 方法
要找到数组中的最大或最小值,可以像下面这样使用 apply()方法。
var values = [1, 2, 3, 4, 5, 6, 7, 8];
var max = Math.max.apply(Math, values);
这个技巧的关键是把 Math 对象作为 apply()的第一个参数,从而正确地设置 this 值
2)舍入方法:
Math.ceil() 执行向上舍入
Math.floor() 执行向下舍入
Math.round() 执行标准舍入
3)random() 方法:返回大于等于 0小于 1的一个随机数
利用 Math.random() 从某个整数范围内随机选择一个值:
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
4)其他方法:
Math.abs(num) 返回num 的绝对值
Math.pow(num, power) 返回num 的power 次幂
Math.sqrt(num) 返回num 的平方根