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

对象的使用

数学内置对象学习对象的使用

1. 基础

创建对象

// 对象字面量
let obj = {key: 'value',method: function() { /* ... */ }
};// 构造函数
let obj = new Object();
obj.key = 'value';// Object.create()
let obj = Object.create(prototypeObject);

属性访问

obj.key;      // 点表示法
obj['key'];   // 方括号表示法(可以使用变量或特殊字符作为键名)

2. 对象属性

属性描述符

let obj = {uname: 'pink老师',age: 18,gender: 'nv'}
let goods = {'goods-name': 'xiaomi',num: '34',weight: '0.55kg',addredd: 'china'}console.log(obj);obj.gender = '男';console.log(obj);// 增加和改的方法一样obj.hobby = '足球';console.log(obj);// 对象访问属性的方法document.write(goods['goods-name']);}

3. 对象遍历(for-in)

// for...in (包括可枚举属性)
// k是带有引号的属性名,形如 'uname',所以不能用点的访问方式for (let k in obj1) {console.log(k);console.log(obj1[k]);}

4.案例

使用数学中的随机数生成来完成随机颜色案例
	 // 向下取整console.log(Math.floor(1.1));// 随机取1到10的随机数console.log(Math.floor(Math.random() * (10 + 1)));

Math.random()会随机生成0到1左闭右开区间中的任意数通过左乘一定值可以生成范围内的数字,通过Math.floor便可获得整数值,通过这一方法可以实现随机访问数组中的值。
随机颜色案例会根据用户输入进入分支条件生成不同的颜色表示,一种是16进制表示方法,一种是rgb表示方法。

	 // 生成任意区间内的随机数function getRandom(n, m) {return Math.floor(Math.random() * (m - n + 1) + n);}
// 随机颜色案例let end;//先将用户操作记录,和字符串true作比较,这样才能正确进行判断操作,我们此时的us是字符串类型let us = prompt('输入true or false');let flag = us === 'true';let alpha = ['0', '1', '2', 'a', 'b', 'c', 'd', 'e', 'f'];// 生成任意区间内的随机数function getRandom(n, m) {return Math.floor(Math.random() * (m - n + 1) + n);}function getSixteenColor() {let SixColor = '#'for (let i = 0; i < 6; i++) {let random = Math.floor(Math.random() * alpha.length);SixColor += alpha[random];}return SixColor;}function getRGB() {let rgb = [];for (let i = 0; i < 3; i++) {rgb[i] = getRandom(0, 255);}return `rgb(${rgb[0]},${rgb[1]},${rgb[2]})`;}function getRandomColor(flag = true) {if (flag) {end = getSixteenColor();} else if (!flag) {end = getRGB();}}getRandomColor(flag)document.write(`<br>${end}`);

在完成这个案例时,我有一错误就是在获取用户输入之后便强制转为Boolean类型,然而这种做法是错误的,用户输入之后返回的是字符串类型,转换后的结果只能为true,只会进入第一个分支,因此这里通过字符串的严格比较来判断用户的输入是否为true,即

	 let us = prompt('输入true or false');let flag = us === 'true';
http://www.dtcms.com/a/279827.html

相关文章:

  • CAN终端电阻为什么是60R+60R,而不直接用120R?
  • 前端vue对接海康摄像头流程
  • Flink窗口处理函数
  • C++-linux 5.gdb调试工具
  • 【从语言幻觉看趋势】从语言幻觉到多智能体协作:GPT多角色系统的技术演进与实践路径
  • 判断端口处于监听状态的方法
  • 腾讯云WAF域名分级防护实战笔记
  • EPLAN 电气制图(八):宏应用与变频器控制回路绘制全攻略
  • ssm学习笔记day07mybatis
  • 如何在 Shopify 中创建退货标签
  • 【C语言】浮点数在内存中的存储:从科学计数法到内存存储
  • 从输入URL到页面呈现都发生了什么?
  • MFC UI大小改变与自适应
  • wpf 实现窗口点击关闭按钮时 ​​隐藏​​ 而不是真正关闭,并且只有当 ​​父窗口关闭时才真正退出​​ 、父子窗口顺序控制与资源安全释放​
  • AI 优化大前端动画性能:流畅性与资源消耗的平衡
  • Django REST framework 源码剖析-URL地址详解(Returning URLs)
  • 亚马逊广告进阶玩法:如何巧妙利用ASIN广告优化产品排名
  • Java面试总结(经典题)(Java多线程)(一)
  • 数据结构——优先队列(priority_queue)的巧妙运用
  • 排序树与无序树:数据结构中的有序性探秘
  • K8s存储系统(通俗易懂版)
  • 约束|additional
  • 如何更改Blender插件安装位置呢?
  • 【Vue】Vue3.6 - Vapor 无虚拟DOM
  • 算法:投票法
  • 硬盘爆满不够用?这个免费神器帮你找回50GB硬盘空间
  • SpringBoot 整合 MyBatis-Plus
  • 多线程是如何保证数据一致和MESI缓存一致性协议
  • 深入浅出Kafka Broker源码解析(下篇):副本机制与控制器
  • Open3D 点云DBSCAN密度聚类