工厂函数和class类

工厂函数

将一系列的属性和方法封装成一个构造函数,使用的时候需要使用new关键字来调用构造函数,目的是为了得到一个独立的实例对象
- js里有内置的构造函数
​
var obj = new Object();
​
1. 当使用new调用函数之后发生了什么?
    - 第一步在函数中创建一个对象
    - 第二步函数中的this指向该对象
    - 第三步把函数中的this返回出去
    - 第四步使用变量接收构造函数的返回值--实力对象
2. 工厂函数的优势
- 独立的作用域,不会污染全局
- 实力出来的对象都是互相独立,互不影响
3. 工厂函数的缺点
- 每次实例化都是在内存中开一个新的对象存储,如果大量实例化会占用内容

对象,原型,原型链,构造函数之间的关系

  1. 对象就是使用构造函数new出来的。

  2. 原型是构造函数的prototype对象,这里除了function函数有原型对象,类也有,基于它可以实现对象的继承

  3. 原型链指的是实例对象身上的proto对象,proto指向的是构造函数的prototype,当我们使用对象点一个属性的时候,这个查找属性的过程称为原型链,程序会沿着对象的proto对象一直找的过程叫原型链

  4. 构造函数是new的函数,也是实例对象的proto下面的constructor【构造函数】

改变this指向的三种方式

【注意】 修改this指向的函数必须是function函数,因为这些方法来自于prototype对象上的,而箭头函数没有原型对象,所以箭头函数不能改变this

call

  1. 第一个参数是对象,后面的参数都是独立传入的

  2. 一旦使用则会立即调用函数

apply

  1. 第一个参数是对象,后面的参数放在数组里

  2. 一旦使用则会立即调用函数

bind【es6】

  1. 第一个参数是对象,后面的参数可以是任意

  2. 不会立即调用对象,而是返回一个修改了this之后的新函数

class类【es6】

  • 类的概念:基于面向对象的概念实现的封装。特点是:封装,多态,继承。

  • class类是原型函数的语法糖

类的底层原理

  • es6的类还是基于函数的prototype封装的,他只是工厂函数的语法糖,其底层代码还是基于函数的封装

  • 因为是基于prototype对象实现的class,在严格意义上它属于伪类

类的继承

  • 子类继承于父类使用关键字extends

  • 当使用new来调用子类的时候,程序会先从子类自身初始化所有的属性和方法,其次才沿着原型对象找到父类,获取父类的属性和方法,如果父类和子类都有相同的属性和方法,则使用子类的替代父类的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值