js 高级程序设计(三) —— 引用类型

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()……

4RegExp类型

① 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.$2RegExp.$9,分别用于存储第一、第二……第九个匹配的捕获组。

5Function类型

函数是对象,函数名是指针;函数没有重载。

② 函数声明和函数表达式的区别:函数声明有函数声明提升。

③ 函数的内部属性:arguments 和 this

arguments:

作用:保存函数参数

argumentscallee属性:指向拥有这个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 个字符。

substringbegin, 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程序执行之前就已经存在了。(ObjectArray、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 的平方根

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值