这是第五章引用类型,这一章涉及引用类型的种类,各个类型身上的方法等相关内容。
主要知识点:
- 1.引用类型和类和对象间是怎样的一种关系?
- 2.ECMAScript 预设了哪些原生的数据类型?
- 3.作为值类型的string为什么可以调用方法?
- 4.包装类是个什么东西?
1.引用类型和类和对象间是怎样的一种关系?
ECMAScript 中的引用类型是一种数据结构,可以将数据和功能结合在一起,有时也被称为类。但在ECMAScript 中始终都没有类,哪怕到了 ES6 中的 class,依然只是一个语法糖。而对象则是引用类型的一个实例,一个引用类型可以创造好多好多的对象。
对象都具有三个方法:
- toLocaleString()
- toString() 当需要输出字符串时会隐式调用该方法
- valueOf()
2.ECMAScript 预设了哪些原生的数据类型?
记得吗?H5 中对一些标签做了初始化 CSS 设置,用起来方便不少,你想用一种标签来写整个网页理论上也是可以的,不过是麻烦了一些。
同样的,为了方便大家的操作,ESMAScript 定义了一些常用的原生引用类型,我们可以用这些东西方便快捷地创造我们想要的对象。
主要有以下几种:
- Object
- Array
- Date
- RegExp
- Function
2.1 Object
Object 是一个比较单纯的引用类型,功能不多,但因其单纯,但我们想要造一个自己的对象时,用 Object 最好不过了。
2.2 Array
Array 时 ECMAScript 中非常重要的数据类型,问题涉及如何检测数据,常用方法,各种算法,ES6 扩展等。当数组调用 toString() 方法时,会返回由数组中的额每个值的字符串形式拼接成的以逗号分隔的字符串。效果与 arr.join(',') 相同。
数组中的方法可以分为以下几种:
- 转换方法 toLocaleString() toString() valueOf()
- 栈方法 push() pop()
- 队列方法 shift() push()
- 重排序方法 reverse() sort()
- 操作方法 concat() slice() splice()
- 位置方法 indexOf() lastIndexOf()
- 迭代方法 every() some() forEach() map() filter()
- 归并方法 reduce()
因数组相关的问题涉及太多,有空单拎出来写。
2.3 Date
Date 这个类型也是蛮有意思的,还记得 0.1+0.2 的问题吗?这里也有一个不符合我们预期的问题。
ECMAScript 中的 Date 抄的 Java.util.Date ,但这里是有不当的地方的,但就硬抄了过来。比如 getMonth() ,按照语义化来讲,应该返回月份,但你试了以后会发现返回的是 月份-1 ,你要说它就是规定从 0 开始吧,但 getDate() 返回的则就是实在的 日期,没有 -1,这就让人很困惑,就这两个方法举例。至于其它的方法,现用现查就好。这个故事告诉我们,抄作业看着点,别硬着头皮抄,但这些不合理的地方用的人多了也就不好改了。错别字慢慢变成通假字。
3.4 RegExp
这是一个功能强大的类型,现在还不是很会,略过。什么时候想玩爬虫,再好好学一学。
3.5 Function
函数是一等公民,还满特殊的,使用typeof检测时,其他引用类型得到 "object",函数得到 "function",搞特殊。
定义函数有两种方式:函数声明和函数表达式,这两种方式会在 预编译 时体现出不同。
后面的章节会有更详细的说明。
3 基本包装类
- Boolean
- Number
- String
string可以有方法吗?按理来讲,值类型是没有方法可以调用的,但你尝试以下就会发现,是可以的,比如 str.substring(2)。
真神奇。那么 ECMAScript 帮我们做了什么呢?
它帮我们创建了基本包装类的一个实例,并在在实例上调用方法,随后销毁了该实例。
小结
懒得总结。
学英语:
- reference type 引用类型
网友评论