这是我参与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 继承
call 和 apply 的区别 :
call的第二个参数个数不固定apply的第二个参数是一个数组,可以通过arguments来代替
5、原型继承
让子类的原型对象指向父类 new 出来的对象 ( 首先在子类的实例上查找,找不到去原型上查找)
子类.prototype = new 父类()
6、混合继承
通过 call 或 apply 方式继承实例属性和方法
通过原型继承继承原型方法
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-前端也要了解一些数据库
【day4】循环结构 & 条件语句、 【day5】函数(重点)、 【day6】作用域 & 事件、
【day7】对象 & 数组方法总结、 【day8】字符串方法 & 部分排序、
【day9】Math 对象 & 封装函数、 【day10】BOM-浏览器对象模型、
【day12】Event 事件对象初识(一)、 【day13】Event 事件对象初识(二)、
更多期待在路上...任重而道远==-..-==