企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
~~~ /* 对象的属性名不能是引用数据类型值 */ // =====基于 对象[属性名] 的方式操作,需要保证属性名是一个值(字符串/数字/布尔等都可以),如果不是值而是一个变量,它会把变量存储的值作为对象的属性名进行操作 // =====基于 对象.属性名 的方式操作,属性名就是点后面的 let n = 100; let obj = { 1: 100 }; console.log(obj[1]); console.log(obj.1); //=>Uncaught SyntaxError: missing ) after argument list 基于点的方式操作有自己的局限性,属性名不能是数字的,不能 对象.数字属性,此时只能用 对象[数字属性] console.log(obj[1]); //100 console.log(obj['1']); //=>其它非字符串格式作为属性名和字符串格式没啥区别 obj.n = 200; //=> {n:200} n是属性名(数据格式是字符串) obj['n'] = 200; //=> {n:200} 和上面的情况一样 obj[n] = 200; //=> {100:200} => obj[100]=200 n本身是一个变量(n和'n'的区别:前者是一个变量,后者是一个字符串的值),它代表的是所存储的值100(是一个数字格式) obj[m] = 200; //=>Uncaught ReferenceError: m is not defined m这个变量没有被定义 obj[true] = 300; //=>{true:300} obj[undefined] = 400; //=>{undefined:400} console.log(obj); let n = { x: 100 }; let m = [100, 200]; let obj = {}; obj[n] = "珠峰"; //=>obj[{x:100}] 但是对象不能作为属性名,需要把其转换为字符串 =>{"[object Object]":"珠峰" } obj[m] = "培训"; //=>obj[[100,200]] =>{ "100,200":"培训" } console.log(obj); //=>如果非要让属性名是个对象,只能基于ES6中的新数据结构 Map 处理 /* * 数组是特殊的对象: * 1.它的属性名是数字,数字从零开始,逐级递增,每一个数字代表着当前项的位置 =>我们把这种数字属性名叫做“索引” * 2.默认有一个length属性存储数组的长度 */ let arr = [10, 20, 30]; console.log(arr[0], arr[1], arr[2]); console.log(arr.length); console.log(arr['length']); ~~~ 1. ![](https://img.kancloud.cn/a5/3d/a53d6026629195728e05c800808d5a58_391x271.png) 2. ![](https://img.kancloud.cn/43/2b/432b7085306e5b4b7b28a21060f6faa3_888x487.png) 3. ![](https://img.kancloud.cn/af/68/af6865d423ce7b44c79707e85418b76c_890x340.png) 4. ![](https://img.kancloud.cn/dc/e7/dce70af4eebc8b94d60969290a4bf49d_561x305.png)