【JS】访问器成员

前言

如下例,有一商品对象,其中属性分别为单价和数量以及一个用于计算总价的方法,需要通过 product.getTotal() 获得总价,也可以使用访问器成员getter控制属性读写逻辑,通过 product.total 的方式获取总价,提高可读性。

javascript 复制代码
const product = {
  name: "iphone",
  price: 13999,
  count: 3,
  getTotal: function () {
    return this.price * this.count
  },
}

ES5

javascript 复制代码
function Product(name, price, count) {
  this.name = name
  this.price = price
  this.count = count
}
Object.defineProperty(Product.prototype, "total", {
  get: function () {
    return this.price * this.count
  },
})

ES6

javascript 复制代码
class Product {
  constructor(name, price, count) {
    this.name = name
    this.price = price
    this.count = count
  }
  get total() {
    return this.price * this.count
  }
}

Object

javascript 复制代码
const p = {
  name: "iphone",
  price: 13999,
  count: 3,
  get total() {
    return this.price * this.count
  },
}
相关推荐
前端Hardy7 小时前
面试官:JS数组的常用方法有哪些?这篇总结让你面试稳了!
javascript·面试
yuki_uix8 小时前
Props、Context、EventBus、状态管理:组件通信方案选择指南
前端·javascript·react.js
全栈老石8 小时前
手写无限画布4 —— 从视觉图元到元数据对象
前端·javascript·canvas
Leon10 小时前
新手引导 intro.js 的使用
前端·javascript·vue.js
牛奶10 小时前
JS随笔:浏览器 API(DOM 与 BOM)
前端·javascript·面试
牛奶11 小时前
JS随笔:异步编程与事件循环
前端·javascript·面试
牛奶11 小时前
JS随笔:数据结构与集合
前端·javascript·面试
小陆猿11 小时前
股票实时行情Echarts动态图表
前端·javascript
牛奶11 小时前
JS随笔:ES6+特性与模块化实践
前端·javascript
牛奶11 小时前
JS随笔:基础语法与控制结构
前端·javascript