ES6 class 类

普通使用原型添加方法

javascript 复制代码
function Animal(name) {
  this.name = name;
}

Animal.prototype.speak = function() {
  console.log(this.name + ' makes a noise.');
};

function Dog(name) {
  Animal.call(this, name);
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

Dog.prototype.speak = function() {
  console.log(this.name + ' barks.');
};

const dog = new Dog('Rex');
dog.speak(); // 输出:Rex barks.

使用class添加方法

javascript 复制代码
class Animal {
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  speak() {
    console.log(this.name + ' barks.');
  }
}

const dog = new Dog('Rex');
dog.speak(); // 输出:Rex barks.

对比下来,不难发现class类添加方法代码更加易懂,易读,也有好的继承特性,后续更加容易维护;

注意事项:

  1. 类并不会被提升;(意味着在代码执行之前,类声明不会被移动到作用域的顶部。这与传统的函数声明和变量声明不同,它们可以在作用域内被提升。因此,在使用类之前必须先声明类,否则会导致引用错误。)
  2. class 是一等公民(first-class);意味着它们可以像其他值一样被传递和使用。你可以将类赋值给变量,将类作为函数参数传递,从函数中返回类,以及在运行时动态地创建类。这使得类在 JavaScript 中更具灵活性,可以更方便地进行模块化和编程。
  3. 类必须在严格模式下运行,类和里面模块默认必须使用严格模式书写
相关推荐
Data_Journal7 分钟前
如何使用cURL更改User Agent
大数据·服务器·前端·javascript·数据库
掌心向暖RPA自动化15 分钟前
如何获取网页某个元素在屏幕可见部分的中心坐标影刀RPA懒加载坐标定位技巧
java·javascript·自动化·rpa·影刀rpa
竹林81833 分钟前
wagmi v2 多链钱包切换:一个 Uniswap 仿盘项目让我踩了三天坑
前端·javascript
donecoding41 分钟前
Playwright MCP 页面捕获:Snapshot、截图、HTML 到底选哪个?
前端·ai编程·前端工程化
你也向往长安城吗42 分钟前
最快的 JavaScript navmesh pathfinding3d 算法。
javascript
滕青山42 分钟前
在线PDF拆分工具核心JS实现
前端·javascript·vue.js
Smilezyl43 分钟前
一个独立开发者,靠一份 markdown 驱动 Claude Code, 用 20 天跑通 9 个包的 monorepo 工程
前端·人工智能·github
技术崽崽1 小时前
不止有 Agent:Cursor 进阶使用技巧全解析
前端
风骏时光牛马1 小时前
Pascal基础语法与控制台编程实战案例详解
前端
TeamDev1 小时前
JxBrowser 9.0.0 版本发布啦!
java·前端·混合应用·jxbrowser·浏览器控件·跨平台渲染·原声输入