JavaScript中的类

类的本质:

首先我们需要明白javascript并不存在类,它的类其实是个语法糖,本质上还是依托原型链和构造函数完成继承。类是一种特殊的函数我们可以使用typeof来进行判断,它和函数的区别有以下几点:

Car class {}
typeof Car   // function
Car.prototype.constructor // class Car
const p = new Car()
p instanceof Car // true

a、如果我们使用声明式的方式创建函数函数声明会提升,但是类不会。

b、调用方式的不同函数可以直接调用或者通过new调用,但是类只能通过new的方式调用,如果不使用new调用会报错。

c、第三个不同是函数是函数作用域,而类属于块级作用域。

其次我们来类的一些特性:

一、类的声明方式及组成:

a、类的声明方式跟普通函数一样有两种声明方式即声明式和表达式:

class Car {}  //类声明式
const Car = class {}  //类表达式

b、类的组成包括:类构造函数、静态方法、给实例原型上添加属性或方法、添加实例属性和方法。类的构成包括以上几种,但事实上,这些都不是必须的,如果我们定义一个空 的类,那么完全是可以的,即便没什么意义。

三、类的构造函数:

constructor是类内部构造函数的关键字,constructor会告诉解释器使用new操作符是应当执行这个函数。当我们用new调用类时和new调用函数时是一样的都做了以下几件事:

a、在内存中创建一个对象。

b、新对象内部的原型指向构造函数或者类的prototype属性。

c、构造函数内部的this指向当前创建的对象,执行构造函数的代码可以赋值。

四、实例、原型、访问器、类成员

实例:我们通过调用this可以给实例添加属性,属性可以是任何数据类型。每个实例都独自拥有所有的实例属性。

原型:如果我们需要给一个构造函数添加原型方法需要调用prototype添加,在class中不用,直接声明式的创建函数就会添加到类中。代码如下:

class Car {
   name = "张十三"
   sayName(){
   console.log(this.name)
   }
}

结果:

 访问器:类也支持访问器格式同对象访问器一样,代码如下:

    class Car {
      sayName() {
        console.log(this._name);
      }
      set name(name) {
        this.name_ = name
      }
      get name() {
        return this.name_
      }
    }
    const person1 = new Car()
    person1.name = 'person1'
    console.log(person1.name); // person1 

一、JavaScript中的类是什么?

js中的类是用来创建对象的,我们可以认为它是一种特殊的函数与一般函数不同的是class不可以提升声明,class内部定义了对象的属性和方法。

二、javascript中的类与其他语言的类有什么不同?

js中的类其实是个语法糖,js中类是基于原型的,它的本质上还是函数,从原型对象中继承方法和属性。

三、如何在JavaScript中定义一个类:

class Car {
  constructor(make, model, year){
      this.make = make
      this.model = model
      this.year = year
  }
  
  getAge(){
      return 2018
  }
}

constructor是类构造函数,通过它类就可以创建实例

四、如何创建class的实例

使用new 关键字:

const myCar = new Car('Honda', 'Accord', 2018);

五、super

super用于调用父类的构造函数和方法

六、静态方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值