晴明的博客园 GitHub      CodePen      CodeWars     

[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]

 

posted @ 2016-02-28 00:52  晴明桑  阅读(189)  评论(0编辑  收藏  举报