js中类与构造函数

js中类的概念:

把具有共同性质的事务归于一类,得到一个抽象概念,就是类。
类的数据类型就是函数,类本身指向构造函数
js中类与构造函数_第1张图片

类的写法

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}

这种新的写法,本质上与下面代码写法是一样的
js中类与构造函数_第2张图片
构造函数的prototype属性,在es6的类中依然存在,类中的所有方法都是定义在prototype属性上的

使用类的原因:

类相当于一个语法糖,让对象原型的写法更加清晰,更像面向对象的编程

使用构造函数初始化对象的原理

  1. 理解new操作符:
    function F(){}
    new F();
    过程:
    创建一个空对象,作为将要返回的实例对象
    将空对象的原型指向构造函数的prototype属性
    将空对象赋值给构造函数内部的this关键字,也就是this会指向实例对象
    开始执行函数内部代码

  2. 根据new操作符理解constructor初始化对象的原理:
    直接对类使用new命令,跟构造函数的用法一致。
    在类的实例上调用方法,实际上就是调用原型上的方法(根据上面function声明的构造函数的写法可知)。所以在实例上调用constructor 方法,实际上就是调用原型上的constructor 方法:

class B {}
const b = new B();

b.constructor === B.prototype.constructor // true

new操作符 最主要的是将this从原始函数指向实例对象,而实例对象的constructor 是等于类的原型上的constructor 。比如上面代码,此时B原型上的constructor的this,就指向实例对象b
所以构造方法的this关键字则代表实例对象。

参考链接:
https://blog.csdn.net/weixin

你可能感兴趣的:(笔记,javascript)