【重温JS】巩固基础 - 继承的几种方式 & 闭包 & 单例模式

272 阅读4分钟

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

☆☆☆ 今天学习的内容: ( 继承的几种方式 & 闭包 & 单例模式 ) !查缺补漏! ☆☆☆

可作为初学者的学习路线, 可参考一下, 学习进度也不是特别赶! 持续更新中

结合自己的理解, 用白话文简单又全面概括 JavaScript 学习过程中的基础知识点, 方便加深理解!

开始今天的学习吧! '打牢地基才能筑高楼'! 加油! 认真对待!!

1、梳理昨日知识点:

( 原型和原型链 | 工厂模式 | 构造函数 )

对象创建几种方式 :  1、字面量创建 2、工厂模式   3、构造函数 : 4、原型   5、混合 6、原型链 :

2、继承

面向对象的三大特性:   封装   继承   多态(js 没有多态)

继承 : 子类继承父类所有的属性和功能

3、继承方式一 : 通过改变父类的执行环境

function Father() {
  this.money = 999999999999
  this.sing = function () {
    console.log('唱歌')
  }
}
function Son() {
  //在子类中定义一个属性  这个属性指向父类的构造函数
  this.parent = Father //在子类中执行父类的构造函数
  this.parent()
}

4、通过 call 或 apply 继承

callapply 的区别 :

  • call 的第二个参数个数不固定
  • apply 的第二个参数是一个数组,可以通过 arguments 来代替

5、原型继承

让子类的原型对象指向父类 new 出来的对象   ( 首先在子类的实例上查找,找不到去原型上查找)

子类.prototype = new 父类()

6、混合继承

通过 callapply 方式继承实例属性和方法

通过原型继承继承原型方法

7、ES6 的构造函数

class

class 构造函数 {
  constructor(属性) {
    this.属性 = 属性
  }
  方法() {}
}

例如 :

class Student {
  constructor(name, age) {
    this.name = name
    this.age = age
  }
  study() {
    return ''
  }

  eat() {
    console.log()
  }
}

8、ES6 的继承

son extends father 继承 父类的属性和方法, 还可以定义自己的特有方法.

class Son extends Father {
  constructor(name, age, score) {
    super(name, age) // 继承父类的属性和方法
    this.score = score // 子类特有的属性
  }
  // 子类特有的方法
  study() {
    return '学习ing'
  }
}

9、闭包

闭包理解

一个函数内部返回一个匿名函数   这个匿名函数就称为闭包

在一个函数体内部能够访问另外一个函数的私有变量,这个函数就称为闭包

闭包的形式多样   都是局部函数全局执行

闭包作用 : 

  • 可以在一个函数内部访问另一个函数的局部变量
  • 闭包的存在,可以延长一个局部变量的生命周期

注意 :

闭包中的 this 指向 window 对象

可以通过闭包   获取一个元素的下标

10、设计模式之单例模式

定义:

单例模式 : 一次只能创建一个对象的实例

// 解决思路 : 将 this 存入到一个变量中   并 返回这个变量

  • //       第二次 new 对象时,判断这个变量中是否含有值 如果有值就返回
  • // var ins = null;  为了防止全局变量污染    将 ins 变成私有的
  • // 可以在构造函数中为该构造函数添加一个私有的属性
function Animal() {
  if (Animal.ins) {
    return Animal.ins
  }
  Animal.ins = this
  return Animal.ins
}
var a1 = new Animal()
var a2 = new Animal()
alert(a1 == a2)

作用

作用 : 局部属性或功能 都会全局执行


预告: 加油, 追梦人

学习就是一个不断进行的过程, 坚持下去, 定有收获!

日积月累, 巩固基础, 早进大厂!

坚持很不容易, 坚持下来更不容易, 你真棒!

Calm Down & Carry On!


更多阅读:

前文更新回顾

【重学 JS】每天学习巩固基础系列文章:

【重温 JS】原型和原型链 | 工厂模式 | 构造函数【重温 JS】巩固基础-面向对象/面向过程/类和对象

【重温 JS】巩固基础之-ajax 原理/缓存/接口【重温 JS】巩固基础 day23-前端也要了解一些数据库

【day1】js 初始

【day2】各种运算符【day3】数据类型

【day4】循环结构 & 条件语句【day5】函数(重点)【day6】作用域 & 事件

【day7】对象 & 数组方法总结【day8】字符串方法 & 部分排序

【day9】Math 对象 & 封装函数【day10】BOM-浏览器对象模型

【day11】DOM-文档对象模型

【day12】Event 事件对象初识(一)【day13】Event 事件对象初识(二)

【day14】事件委托 & 拖拽原理

【day15】拖拽实现 & 正则初识【day16】正则具体方法

【day17】cookie【day18】ES6

【day19】Js 运动函数的封装

【day21】前三周学习复习

【day22】服务器端和客户端

更多期待在路上...任重而道远==-..-==