千家信息网

js中什么是类

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,小编给大家分享一下js中什么是类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是类?类(class)是在 JS 中编写
千家信息网最后更新 2025年01月17日js中什么是类

小编给大家分享一下js中什么是类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

什么是类?

类(class)是在 JS 中编写构造函数的新方法。它是使用构造函数的语法糖,在底层中使用仍然是原型和基于原型的继承。

 //ES5 Version   function Person(firstName, lastName, age, address){      this.firstName = firstName;      this.lastName = lastName;      this.age = age;      this.address = address;   }   Person.self = function(){     return this;   }   Person.prototype.toString = function(){     return "[object Person]";   }   Person.prototype.getFullName = function (){     return this.firstName + " " + this.lastName;   }     //ES6 Version   class Person {        constructor(firstName, lastName, age, address){            this.lastName = lastName;            this.firstName = firstName;            this.age = age;            this.address = address;        }        static self() {           return this;        }        toString(){           return "[object Person]";        }        getFullName(){           return `${this.firstName} ${this.lastName}`;        }   }

重写方法并从另一个类继承。

//ES5 VersionEmployee.prototype = Object.create(Person.prototype);function Employee(firstName, lastName, age, address, jobTitle, yearStarted) {  Person.call(this, firstName, lastName, age, address);  this.jobTitle = jobTitle;  this.yearStarted = yearStarted;}Employee.prototype.describe = function () {  return `I am ${this.getFullName()} and I have a position of ${this.jobTitle} and I started at ${this.yearStarted}`;}Employee.prototype.toString = function () {  return "[object Employee]";}//ES6 Versionclass Employee extends Person { //Inherits from "Person" class  constructor(firstName, lastName, age, address, jobTitle, yearStarted) {    super(firstName, lastName, age, address);    this.jobTitle = jobTitle;    this.yearStarted = yearStarted;  }  describe() {    return `I am ${this.getFullName()} and I have a position of ${this.jobTitle} and I started at ${this.yearStarted}`;  }  toString() { // Overriding the "toString" method of "Person"    return "[object Employee]";  }}

所以我们要怎么知道它在内部使用原型?

class Something {}function AnotherSomething(){}const as = new AnotherSomething();const s = new Something();console.log(typeof Something); // "function"console.log(typeof AnotherSomething); // "function"console.log(as.toString()); // "[object Object]"console.log(as.toString()); // "[object Object]"console.log(as.toString === Object.prototype.toString); // trueconsole.log(s.toString === Object.prototype.toString); // true

以上是"js中什么是类"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0