每天10个前端知识点:面向对象(上)

个人博客已上线,欢迎前去访问评论!
无媛无故 - wangchloe的个人博客


以下内容若有问题烦请即时告知我予以修改,以免误导更多人。


1. 面向对象

(1) 对象组成

  1. 属性(变量)
  2. 方法(函数)

(2) 面向对象特征

  1. 封装
  2. 继承
    子级可以继承父级的一切东西
  3. 多态
    子级可以继承多个父级

(3) 对象相关方法

  • instanceof 判断是否属于该类型

    • true 属于
    • false 不属于
      eg: arr instanceof Array; // true
  • constructor 查找对象的父级
    eg: arr.constructor == Array; // true

JSON不是一个类型,其父类型就是Object
json.constructor == JSON; // false
json.constructor == Object; // true

执念


2. 引用类型

  • Object类型

  • Array类型

  • Date类型

  • RegExp类型

  • Function类型

  • 基本包装类型

    • Boolean类型
    • String类型
  • 内置对象

    • Global对象
    • Math对象

Array.sum实现原理


Array.forEach实现原理


Array.every实现原理


Array.some原理


Array.map原理


Array.reduce原理


Function.bind原理


3. 创建对象前导

(1) 关于new

  1. 创建一个空对象,并赋值给this
  2. 返回this

(2) 关于this

当前方法属于谁,this就是谁


每天10个前端知识点:面向对象(上)_第1张图片
关于this.png

this - JavaScript | MDN

this的优先级

  1. new -> object
  2. 定时器 -> window
  3. 事件 -> 事件对象
  4. 方法 -> 方法对象

多包一层时优先级失效

哈哈,关于this的坑详见后面的坑集合!


强制改变this指向

  • call
    • fn.call(a); 改变this指向,指向a
    • fn.call(a, p1, p2); 改变this指向并传参p1, p2
  • apply
    • fn.apply(a, [p1, p2]); 改变this指向并传入参数数组
    • fn.apply(a, arguments); 改变this指向并传入当前方法(非fn)的参数数组

更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!

公众号是坚持日更的,不发文的时候推送一些我觉得好用的前端网站或者看到的一些问题的解决方案,也更便于大家交流,就酱。

每天10个前端知识点:面向对象(上)_第2张图片
微信公众号:无媛无故

你可能感兴趣的:(每天10个前端知识点:面向对象(上))