对象的使用
数学内置对象学习对象的使用
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';