Js 构造函数和class的区别

在JavaScript中,构造函数(Constructor Functions)和类(Classes)都可以用来创建对象和实现继承,但它们在语法和某些功能上存在一些差异。

构造函数(Constructor Functions)

构造函数是传统的JavaScript创建对象的方式。它们是普通的函数,用于创建和初始化对象。

  • 语法:构造函数使用大写字母开头,以区分普通函数。
  • 原型:构造函数有一个prototype属性,用于定义实例共享的方法和属性。
  • 实例化:使用new关键字来创建实例。
function Person(name) {
  this.name = name;
}

Person.prototype.sayName = function() {
  console.log(this.name);
};

var person1 = new Person('Alice');

类(Classes)

类是ES6(ECMAScript 2015)引入的新语法,它提供了一种更清晰、更简洁的方式来创建对象和实现继承。

  • 语法:类使用class关键字定义,类内部的方法不需要使用function关键字。
  • 原型方法:在类中定义的方法会被直接添加到类的原型上。
  • 构造方法:类有一个特殊的构造方法constructor,用于初始化实例。
  • 继承:类使用extends关键字来实现继承,并且可以使用super关键字来调用父类的构造方法或方法。
    class Person {
      constructor(name) {
        this.name = name;
      }
    
      sayName() {
        console.log(this.name);
      }
    }
    
    const person1 = new Person('Alice');
    

    构造函数和类的区别

  • 语法:类提供了更简洁的语法,让对象的原型链继承更加直观。
  • 原型:在构造函数中,原型是显式地通过prototype属性定义的。而在类中,原型方法是在类体内部定义的。
  • 继承:类使用extendssuper关键字来简化继承的实现,而构造函数则依赖于原型链和构造函数的调用。
  • 表达式:类可以是表达式,而构造函数始终是声明。
  • 类方法不可枚举:类定义的方法是不可枚举的,而构造函数原型上的方法默认是可枚举的。
  • 目标明确:类在语法上更明确地表示它是一个用于创建对象的模板,而构造函数则可能被误用为普通函数。

尽管构造函数和类在实现上有差异,但它们在底层实现上仍然是基于原型链的。类在编译时会被转换成构造函数和原型链的语法,因此它们在功能上是等价的。使用类主要是为了代码的可读性和维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值