方式一:
var student = new Object(); student.name = "easy"; student.age = "20";
方式二:
var student={ name : 'lxx', age : 18, sex : 'male', fav : function (a) { alert('爱好姑娘'); return '美女'+ a + '岁'; } } console.log(person); console.log(person.name); console.log(person.fav(18));
根据数据类型不同,有的变量储存在栈中,有的储存在堆中。具体区别如下:
原始变量及他们的值储存在栈中,当把-个原始变量传递给另一个原始变量时,是把一个栈房间的东西复制到另一个栈房间,且这两个原始变量互不影响。
引用值是把引用变量的名称储存在栈中,但是把其实际对象储存在堆中,且存在- -一个指针由变量名指向储存在堆中的实际对象,当把引用对象传递给另一个变量时,复制的其实是指向实际对象的指针,此时两者指向的是同一个数据,若通过方法改变其中-个变量的值,则访问另一个变量时,其值也会随之加以改变;但若不是通过方法而是通过重新赋值此时相当于重新开了-个房间该值的原指针改变,则另外-个值不会随他的改变而改变。
//初始值类型 var a = 'lxx'; var b = a; var a = 'wxx'; console.log(a); //wxx console.log(b); //lxx //属性和值都在栈区 //对象类型 var arr1 = [1,2]; var arr2 = arr1; arr1.push(3); console.log(arr1); //[1,2,3] console.log(arr2); //[1,2,3] var arr1 = [4,5]; console.log(arr1); //[4,5] console.log(arr2); //[1,2,3] //属性在栈区,存储的值是内存地址;值在堆区,存储的事数据
var obj = new Object() obj.name = 'lxx'; obj.age = 12; obj.gender = 'male'; //方式一 console.log(obj.name); console.log(obj.age); //方式二 console.log(obj["name"]); //循环遍历 for (var i in obj){ console.log(i,obj[i]); } /* name lxx age 12 gender male */
json是-种数据格式,语法一般是{}或者[]包含起来
内部成员以英文逗号隔开,最后一个成员不能使用逗号!
可以是键值对,也可以是列表成员
json中的成员如果是键值对,则键名必须是字符串.而json中的字符串必须使用双引号圈起来
json数据也可以保存到文件中,一般以“ . json"结尾。
前端项目中,一般使用json作为配置文件.
在JSON中,有两种结构:对象和数组
var packJSON= {"name":"alex", "password":"123"};
一个对象以“{”开始,“}”结束,“key/value”之间运用 “,”分隔。
var packJSON = [{"name":"alex", "password":"123"}, {"name":"wusir", "password":"456"}];
数组是值的有序集合。一个数组以“[”开始,“]”结束。值之间运用 “,”分隔。
json对象和json字符串转换
var s = '{"name": "lxx", "age": 12}' //把一个json字符串解析成JS能识别的数据类型:反序列化 var data = JSON.parse(s); console.log(data,typeof data); console.log(data.name); console.log(data['age']); var res = { state:true, data:[123,321,231] }; //把JS的数据类型转化成json字符串:序列化 var res_json_str = JSON.stringify(res); console.log(res_json_str); //'{"state":true,"data":[123,321,231]}'
遍历json对象和json数组
var packAlex = {"name":"alex", "password":"123"} ; for(var k in packAlex ){//遍历packAlex 对象的每个key/value对,k为key alert(k + " " + packAlex[k]); }
var packAlex = [{"name":"alex", "password":"123"}, {"name":"wusir", "password":"456"}]; for(var i in packAlex){//遍历packJson 数组时,i为索引 alert(packAlex[i].name + " " + packAlex[i].password); }