JavaScript是面向对象的吗?

1,293 阅读4分钟

面向对象的编程(OOP)是一种编程方法,每个开发者在他们生活的某个阶段都会使用这种方法,围绕着对象或数据而不是逻辑或函数来组织软件设计,对象是一个具有某些属性和类型的实体。使用OOP技术的好处包括模块化、可重用性、安全性、生产力、灵活性,并且易于扩展和升级。

OOP的特点

OOP的三个主要特点如下

i) 封装

封装是OOP的一个概念,它将数据和操作这些数据的方法捆绑在一个单元内,例如,java中的一个类,一个类的实例被称为一个对象。封装也是指限制对某些类或对象的数据访问,因此所有的用户都不能访问某些对象的变量或状态值。

ii) 继承

在继承中,一个类(子类)继承了另一个类(父类)的所有方法和属性。

iii) 多态性

多态性是指一个属性有多种形式,是OOP的核心概念之一。多态性使我们能够创建关于对象的程序,而这些对象的确切类型在运行时是不知道的。

JavaScript是面向对象的吗?

JavaScript是一种基于原型的编程语言,主要用于创建Web应用程序和网页。原型编程语言是OOP的一种风格,其中已经创建的对象可以被克隆和重复使用,这样就可以构建程序或应用程序。在基于原型的编程语言中,函数被用作类的构造器。

JavaScript在OOP应用程序的编程方面非常出色,而且严重地基于对象,但是它不是一种基于类的OOP语言,而是一种基于原型的编程语言。然而,我们可以把JavaScript作为一种基于类的编程语言。JavaScript允许你制作或创建新的对象供你的应用程序使用。然而,需要注意的是,虽然OOP语言鼓励并关注关系和分类,但基于原型的语言则首先关注并鼓励行为,然后再进行分类。

在2015年,JavaScript引入了一个类的关键字,这是为了使JavaScript成为OOP语言,但它只是在现有的原型技术上的合成糖。外表看起来像OOP,然而在后台,原型设计仍在继续。

下面是一个JavaScript中OOP的例子,我们用类来定义学生对象,并有名字和成绩的属性,以及返回学生名字和成绩的方法study()。

class student {
  constructor(name, grade) {
      this.name = name;
      this.grade = grade;
  }
  studies() {
      return `${this.name} studies in ${grade}`;
  }
}
let myStudent1 = new student("Jhon", 6);
console.log(myStudent1);

如果我们展开上面的截图中看到的原型,我们会看到proto引用了学生原型,而学生原型实际上引用了Object原型。

JavaScript封装实例

让我们看一个例子,其中使用了继承,定义了人的类或对象,一个人有一个名字,还定义了一个返回名字的方法。另一个类student被定义为person的扩展,因此继承了父类即person的所有属性和方法,在子类即student类中,我们使用了super关键字,调用了父类或person类的构造函数。你还可以看到,person对象和student对象都有一个名称相同的toString()方法。这被称为覆盖,OOP允许我们在子类中拥有一个与父类相同名称和签名的方法。

//Example of Inheritance
class person{
  constructor(name){
      this.name = name;
  }
  //String returns from this method
  toString(){
      return (`Name: ${this.name}`);
  }
}
class student extends person{
  constructor(name,regid){
      //super keyword used to call Parent constructor
      super(name);
      this.regid = regid;
  }
  toString(){
      return (`${super.toString()}, Registration ID: ${this.regid}`);
  }
}
let myStudent1 = new student('Jhon',1032);
alert(myStudent1.toString());

总结

OOP是一种编程模型,它围绕对象而不是逻辑或函数来组织我们的软件设计。 一个对象有一些属性和价值。通过使用OOP,我们实现了安全性、生产力、可重用性以及更多。

JavaScript是一种基于原型的编程语言,然而在2015年引入了类关键词,这使得JavaScript像一种OOP编程语言,但正如我们在上面的描述中看到的那样,在后台原型设计仍在继续。简单地说,JavaScript是一种基于原型的面向对象的编程语言。