以下内容若有问题烦请即时告知我予以修改,以免误导更多人。
1. 面向对象
(1) 对象组成
- 属性(变量)
- 方法(函数)
(2) 面向对象特征
- 封装
- 继承
子级可以继承父级的一切东西 - 多态
子级可以继承多个父级
(3) 对象相关方法
instanceof 判断是否属于该类型
- true 属于
- false 不属于
eg:arr instanceof Array;
// true
constructor 查找对象的父级
eg:arr.constructor == Array;
// true
JSON不是一个类型,其父类型就是Object
json.constructor == JSON;
// falsejson.constructor == Object;
// true
执念
1 | <script> |
2. 引用类型
- Object类型
- Array类型
- Date类型
- RegExp类型
Function类型
基本包装类型
- Boolean类型
- String类型
- 内置对象
- Global对象
- Math对象
Array.sum实现原理
1 | <script> |
Array.forEach实现原理
1 | <script> |
Array.every实现原理
1 | <script> |
Array.some原理
1 | <script> |
Array.map原理
1 | <script> |
Array.reduce原理
1 | <script> |
Function.bind原理
1 | <script> |
3. 创建对象前导
(1) 关于new
- 创建一个空对象,并赋值给this
- 返回this
(2) 关于this
当前方法属于谁,this就是谁
1 | <script> |
this的优先级:
- new -> object
- 定时器 -> window
- 事件 -> 事件对象
- 方法 -> 方法对象
多包一层时优先级失效
哈哈,关于this的坑详见后面的坑集合!
1 | <script> |
强制改变this指向
- call
fn.call(a);
改变this指向,指向afn.call(a, p1, p2);
改变this指向并传参p1, p2
- apply
fn.apply(a, [p1, p2]);
改变this指向并传入参数数组fn.apply(a, arguments);
改变this指向并传入当前方法(非fn)的参数数组
- bind
fn.aplly(a);
改变this指向,只生效一次
更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!