javaScript高级教程(三) javaScript不支持关联数组,只是语法上像关联数组
1.在js中所有要素都是继承自Object对象的,任何对象都能通过obj['name'] = something的形式来添加属性,相当于obj.name=something。
之所以设计中括号这种存取方式是为了方便在存取属性不定的情况下把属性名作为变量传入进行存取。例如
function get(property){ return obj[property]; } var name=get('name');
2.var obj={name:"licous"};这个东西并不是大家所谓的json,而是声明一个对象。
json是一种为了方便数据交换的有格式的文本,例如'{"name":"licous"}'
3.对象就是关联数组,所以对象的元素可以像关联数组一样调用
(function(){ var q = { a:'aa', f:function(){ alert('f'); }}; alert(q['a']); //相当于q.a; q['f'](); //相当于q.f(); var q1 = clone(q); q1.a = 'along'; alert(q.a); // 还是aa })(); //返回新对象,双方互不影响 function clone(obj){ if(typeof(obj) != 'object') return obj; if(obj == null) return obj; //因为typeof(null) == object所以还要加上这步 var newObj = {}; for(var i in obj){ newObj[i] = clone(obj[i]); //递归调用 //alert('obj['+i+'] '+obj[i]); } return newObj; }