[js] 数组、对象、函数的创建与访问
关联数组
若索引大于数组数量,或为字符串,则创建关联数组元素。
当关联数组元素索引名也是数字时,只要索引不大于数组数量,优先创建索引数组,
已存在的关联数组元素被创建的索引数组覆盖,
并且若后续的关联数组名也是数字的,正好接上索引,被变更为索引数组
var a = []; console.log(a[3]); //undefined console.log(a[3]=false); //false //创建关联数组元素 console.log(a); //[3: false] console.log(a[0]); //undefined console.log(a[3]); //false console.log(a[0]=true); console.log(a[1]='gg'); console.log(a['aa']='bb'); console.log(a[true]=false); console.log(a[3]); //false console.log(a[2]); //undefined console.log(a[3]='试试改变'); //'试试改变' console.log(a[4]='继续改变'); //'继续改变' console.log(a); //[true, "gg", 3: "试试改变", 4: "继续改变", aa: "bb", true: false] console.log(a[2]='kk'); console.log(a); //关联元素变成了索引元素 //[true, "gg", "kk", "试试改变", "继续改变", aa: "bb", true: false] console.log(a[3]='还要改变'); console.log(a); //一起变了 //[true, "gg", "kk", "还要改变", "继续改变", aa: "bb", true: false]
索引数组
var b = [4, 3, 2, 1, 5]; console.log(b[3]); //1 console.log(b[3]=false); //false console.log(b); //[4, 3, 2, false, 5]
对象
既可以用关联数组那一套,也可以用对象那一套,但是不会有索引数组什么事
var c ={}; c['直接创建']='对象字面量'; //创建关联数组形式创建 console.log(c); //Object {直接创建: "对象字面量"} console.log(c[0]); //undefined console.log(c['直接创建']); //"对象字面量" console.log(c.直接创建); //对象读取方式 //"对象字面量" c[0] = '试试'; console.log(c); //Object {0: "试试", 直接创建: "对象字面量"} c.西瓜 = '夏天快到了'; console.log(c); //Object {0: "试试", 直接创建: "对象字面量", 西瓜: "夏天快到了"}
不事先声明类型
不声明类型不可以直接创建对象元素。
var d; console.log(d); // 默认undefined console.log(typeof d); // 'undefined' d.冬瓜='夏天还没到' console.log(d);//error var e; e[0]='第一'; console.log(e);//error var f; f['冬瓜']='夏天还没到'; console.log(f);//error
函数
好像只能通过对象方式创建和访问属性,
并且访问 function xx(){} 只能先实例化。
var g = function(){return 123;}; g.aaa = 'bbb'; console.log(typeof g); //function console.log(g); //function(){return 123;} console.log(g.aaa); //'bbb' console.log(g[0]); //undefined g[0] = '试试function'; //创建了一个奇怪名字的全局变量 console.log(g); console.log(g.aaa); console.log(g[0]); console.log(typeof g[0]); function h(){ return g[0]; } console.log(h()); //'试试function' g['fly'] = 'burn'; //创建了一个奇怪名字的全局变量 console.log(g); console.log(g.aaa); console.log(g['fly']); console.log(typeof g['fly']); function i(){ return g['fly']; } console.log(i()); //'burn'
#其他
var ccc = new Array(3); for(var i =0;i<ccc.length;i++){ console.log(i); //0 //1 //2 } ccc.push(5); ccc.push(6); ccc.push(7); ccc.push(8); console.log(ccc); //[3: 5, 4: 6, 5: 7, 6: 8]