当前位置: 首页 > news >正文

详解JavaScript中属性getter和setter

6.6 属性getter和setter

属性值可以用1个或者2个方法替代,getter和setter.

由这两个定义的属性称作存取器属性(accessor property),不同于数据属性,只有一个简单的值。有读写属性,只能写,只能读,可以读写。

代码实现:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>6.6 属性getter和setter</title><script>var p={x:1.0,y:1.0,get r(){return Math.sqrt(this.x*this.x+this.y*this.y);},set r(newvalue){var oldvalue=Math.sqrt(this.x*this.x+this.y*this.y);var ratio=newvalue/oldvalue;//比率this.x*=ratio;this.y*=ratio;},get theta(){return Math.atan2(this.y,this.x);//赛塔,反切}}</script></head><body><h1>6.6 属性getter和setter</h1></body>
</html>

页面效果:

产生严格自增的序列号

代码实现:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>产生严格自增的序列号</title><script>//这个对象产生严格自增的序列号var serialnum={//包含下一个序列号//$符号暗示这个属性是一个私有属性$n:0,get next(){return this.$n++;//返回当前值,然后自增},set next(n){if (n >= this.$n) {this.$n=n;} else{throw "设置的序列号的值不能比当前值小!"}}}</script></head><body><h1>产生严格自增的序列号</h1><textarea name="" id="" cols="100" rows="18" readonly>//这个对象产生严格自增的序列号var serialnum={//包含下一个序列号//$符号暗示这个属性是一个私有属性$n:0,get next(){return this.$n++;//返回当前值,然后自增},set next(n){if (n >= this.$n) {this.$n=n;} else{throw "设置的序列号的值不能比当前值小!"}}}</textarea></body>
</html>

页面效果:

产生随机数的对象

代码实现:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>产生随机数的对象</title><script>//这个对象有可以返回随机数的存取器属性var random={get octet(){return Math.floor(Math.random()*256);},get unit16(){return Math.floor(Math.random()*65535);},get int16(){return Math.floor(Math.random()*65535)-32768;}}</script></head><body><h1>产生严格自增的序列号</h1><textarea name="" id="" cols="90" rows="13" readonly>//这个对象有可以返回随机数的存取器属性var random={get octet(){return Math.floor(Math.random()*256);},get unit16(){return Math.floor(Math.random()*65535);},get int16(){return Math.floor(Math.random()*65535)-32768;}}</textarea></body>
</html>

页面效果:


http://www.mrgr.cn/news/37378.html

相关文章:

  • JVM 类加载机制2
  • 阻塞信号(`blockSignals(true)`)的作用
  • c++----继承(初阶)
  • vue项目中的node、node-sass、sass-loader之间的版本关系
  • kubernetes调度2
  • 双十一有哪些数码家电值得入手?双十一五款必入手名单大曝光
  • 3.5k star 一款开源简单好用的前端TAG标签组建库
  • Oracle EBS中 成本管理 模块的财务流程概览
  • 影刀--- 自动化机器人需要了解的三大逻辑
  • 海外电商SaaS平台的接口对接
  • Python中的“实例化对象”:从零开始的探索之旅
  • cocosCreator 2.x 原生平台不息屏
  • PMP--三模--解题--21-30
  • MySQL重点,面试题
  • 抢占未来风口:产品经理如何借助大模型技术再造职业巅峰?
  • Python 使用 Graham 扫描的凸包(Convex Hull using Graham Scan)
  • 【Java】Java中String、StringBuilder、StringJoiner详解
  • HyperWorks使用六面体和三棱柱单元进行实体网格剖分
  • Linux云计算 |【第四阶段】PROJECT2-DAY2
  • AI赋能,数字技术服务平台促进产业协同发展