数组的应用:存储有序数据
对象的应用:存储无序数据
json格式的对象
{
健名:值 // 一组属性 每组属性之间用,隔开
属性名建议写上 双引号
最后一组属性 的 逗号问题,使用ES5 语法 建议不写,使用ES6 语法建议写上
}
json 对象的简写
1、当一个属性的值等于一个变量,并且这个变量的值等于属性的时候,可以写成 只写一个就好
let name = "楚鑫";
let obj = {
name
};
console.log(obj.name)
2、当一个属性值是一个函数的时候 : 可以省略不写,function
也可以不写
let obj = {
"fn" () {},
}
console.log(obj.fn);
}
python
:不叫对象 叫字典
3、对象的属性直接写不用引号引起来的时候,类型是 string
4、解构赋值
解构赋值语法是一个
Javascript
表达式,这使得可以将值从数组或属性从对象提取到不同的变量中
对象的解构赋值,当我们只需要某一个对象的方法时,我们可以使用解构赋值,这时候就不需要把整个模块都加载进来,减少负荷
let {PI} = Math;
console.log(PI); // 3.141592653589793
5、展开运算符 ...
当 ... 出现在函数的时候,在调用这个函数的时候,传进去的数据是散的, ... 把散的数据用一个数组包起来,再通过...后面的词,当成这个数组的名字,收集起来
当 ... 不是出现在函数的时候,是把数据一个一个展开
ES5: for-in
迭代数组,可以迭代对象 返回变量的序号 迭代对象首选 性能较差
ES6: for-of
迭代数组,不能迭代对象 返回变量的值 迭代数组、类数组首选 性能较好
6、鸭子类型
JSON 格式的对象字符串表示法
`{"a": 1, "b": 2}`
{"a": "1", "b": "2"}
一、JSON
1 、创建对象(JSON)
对象是
Javascript
的基本数据结构,对象是引用类型
创建对象的三种方式 对象直接量,new Oject(), Object.create( { } )
[ ES5 ],create
创建需要一个对象参数
// 直接量
var obj = {}
// new
var obj = new Object()
// ES5
var obj = Object.create()
对象都是一个
key
(键):value
( 值 ) 一一 对应
age
为对象的key
(键),或obj
的age
属性
20
为age
的value
( 值 )
严格是对象为 JSON
// 对象
var obj = { age: 20,name: '小黑', }
// JSON
var obj = { 'age' : 20,'name': '小黑', }
2 、访问 JSON
的值
obj.attribute
obj[attribute]
var obj = {
age: 20,
name: '小黑',
sex: '男'
}
alert( obj.age ) //20
//或
xalert( obj[age] ) //20
3 、修改 JSON
的属性值
var obj = { name: '小黑'};
obj.name = '二狗';
//或
obj[name ] = '二狗';
4 、删除JSON属性
delete 可以删除对象属性
var obj = {};
obj.name = 'hello';
delete obj.name
//或
delete obj[name]
5 、JSON数字属性
var obj = {
age: 20,
name: '小黑',
sex: '男'
};
obj[0] = 'hello';
obj[1] = 'AAA';
6、in 判断对象是否存在某个属性
var obj = {
hello:123
};
alert( 'hello' in obj ); //true
7、json 格式对象的序列化和反序列化
JSON.stringgify()
对象转字符串 属性值为函数的时候,可能会过滤掉这个函数,因为后台程序函数语法可能都不一样
JSON.parse()
字符串转对象
JSON.parse
里面出现单引号就转失败
let obj = {
"a": '1',
"b": function () {}
}
let a = JSON.stringify(obj);
console.log(a); // {"a":"1"} string
let b = JSON.parse(a);
console.log(b); // {a: "1"} object
JSON.stringify()
数组转字符串
数组转字符串值有函数会该值转化为
null
console.log( JSON.stringify( [1, 2, function fn() {} ] ) ); // [1,2,null]
8、Object.is(value1, value2) 判断两个值是否相等
两个值都是
undefined
两个值都是null
两个值都是true
或者都是false
两个值是由相同个数的字符按照相同的顺序组成的字符串
两个值指向同一个对象
两个值都是数字并且
都是正零+0
都是负零-0
两个值都是undefined
都是NaN
都是除零和NaN
外的其它同一个数字
二 、(for in) (for of) 遍历 json
1、for in
遍历 JSON
var person = {
age: 20,
name: '小黑',
sex: '男'
}
for( var attr in person){ //attr 为属性,attr不是必须的,可以为任意变量名
console.log( attr ); //属性名: age,name,sex
console.log( person[attr] )//对应的属性值:20 小黑 男
}
2、for in
也可以遍历数组 (性能较差)
var arr = [8,2,4,6];
for ( var index in arr){
console.log( index ); //0 1 2 3
console.log( arr[index] ); // 8 2 4 6
}
3、for of
也可以遍历数组 ,不能遍历对象 (性能比 for in 好)
var arr = [8,2,4,6];
for ( var index of arr){
console.log( index ); // 8 2 4 6
}
!!!!
for
循环不能遍历JSON
网友评论