JavaScript 中的类使用方法

发布于 2024-02-12 01:29:06 字数 2889 浏览 16 评论 0

一. 类的基本创建

实际上在 ES6 中的 class 相关语法实际上就是语法糖,绝大部分功能都能通过 ES5 实现,现在我们先看一下在 ES5 中如何创建一个对象:

// ES5 对象创建方法:
function Phone(brand,price){
  this.brand = brand;
  this.price = price;
}
Phone.prototype.call = function (message){
  console.info(this.brand+"能打电话:"+message);
}

let huawei = new Phone("HUAWEI",5999);
huawei.call("你好,我是 xxxx");

在 ES6 椎间盘美国

class Phone{
  //构造方法,名字固定不能修改,在调用 new 关键字创建实例时被调用。
  constructor(brand ,price) {
    this.brand = brand;
    this.price = price;
  }

  call(message){
    console.info(this.brand+"能打电话:"+message);
  }
}

let phone = new Phone("HUAWEI",5999);
phone.call("Hello")

二. 类中的静态成员

ES5 中的实现方式:

function Phone(brand,price){
  this.brand = brand;
  this.price = price;
}
Phone.desc = '手机'//定义静态属性
Phone.showDesc = function(){//定义静态方法
  console.log(this.desc);
}
Phone.showDesc();//调用静态方法

ES6 中的实现方式:

class Phone{
  static desc = '手机';
  static showDesc(){
    console.log(this.desc);
  }
}

三. 继承

ES5 中继承的实现:

function Phone(brand,price){
  this.brand = brand;
  this.price = price;
}
Phone.prototype.call = function (message){
  console.info(this.brand+"能打电话:"+message);
}

//智能手机
function SmartPhone(brand,price,color,size){
  Phone.call(this,brand,price);
  this.color = color;
  this.size = size;
}
//设置子集构造函数的原型
SmartPhone.prototype = new Phone;
//声明子类的方法
SmartPhone.prototype.photo = function (){
  console.info(this.brand+"能拍照,颜色"+this.color);
}

let phone = new SmartPhone("锤子手机",5999,"红色",123);
phone.photo();

console.log(phone)

使用 ES6 实现类的继承:

//类的继承
class Phone{
  constructor(brand ,price) {
    this.brand = brand;
    this.price = price;
  }

  call(message){
    console.info(this.brand+"能打电话:"+message);
  }
}

class SmartPhone extends Phone{
  constructor(brand ,price,color,size) {
    super(brand,price);
    this.color = color;
    this.size = size;
  }
  photo(){
    console.info(this.brand+"能拍照,颜色"+this.color);
  }
}

let smartPhone = new SmartPhone('锤子手机',5999,"红色",123);
smartPhone.photo();

四. get 和 set 方法

  class Phone {
    constructor(brand, price) {
      this._brand = brand;
      this._price = price;
    }

    get brand() { // 当我们获取对象属性时就会触发这个方法
      console.log("获取了一次 brand 属性")
      return this._brand;
    }

    set brand(value) {
      console.log("设置了一次 brand 属性")
      this._brand = value;
    }

  }
  let phone = new Phone("小米",4222);
  console.log(phone.brand);

输出:

获取了一次 brand 属性
小米

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

自找没趣

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文