一、对象
- 在js中,对象是一种数据类型,不同于其他语言中的对象,js对象可以直接写出来,对象的写法包括:
{}
字面量、new Object()
、Object.create({})
。格式是{键:值},多个键值对用逗号分隔,键表示属性名,值表示属性值。
- 键可以加引号也可以不加引号,可以写字符串和数值类型,其他变量类型不能书写。值必须存储数据,可以是任意数据类型,和数组类似。
- 在es6中,如果键名和变量名一致,那么可以直接写变量进去,变量名表示键的值,变量值表示值。
- 查找一个属性的值:使用中括号语法或者.语法获取。对于类数组,其实是个对象,有length属性和熟知的键。
- 修改属性的值:
obj.name = "张三";
。
- 添加值:
obj.age = 18;
直接添加。
- 删除键值对:
delete obj.name;
- 判断对象中是否存在某个属性,使用
in
关键字:"name" in obj
存在为true,不存在为false。
var stu = {
name:"张三",
0:"000",
1:"111",
2:"222",
length:3
};
stu.name = "李四";
stu.xx = NaN;
stu.height = 180;
console.log(stu[0]); //000
console.log(stu.0); //报错
if("xx" in stu){
alert("存在");
}else{
alert("不存在");
}
二、遍历对象
- 数组自带length属性,但是类数组本质是一个对象,没有默认的length属性。
- 对象的遍历使用for...in循环,但是for in循环性能太低了,因为for in循环不仅遍历对象的每一个属性,而且还遍历了对象的原型链。
var oArr = {
0:'你好',
1:'他好',
2:'我也好',
lenght:3
}
console.log(oArr);
for(var i = 0; i<oArr.length;i++){
console.log(oArr[i]);
}
var obj = {
name:"张三",
age:18,
length:2,
}
for(var x in obj){
console.log(x);
}
三、json
- json:JavaScript Object Notation "js 对象 标记",是通用的数据传输格式,本质上是一个字符串。
- 长得像对象,但是写法不一样,键和值必须用双引号包裹。
- 序列化:
JSON.stringify
只有对象、数组、字符串、数值、布尔值、null可以序列化为json。
- 反序列化:
JSON.parse
把json转换为js对象。
-
JSON.parse/stringify
不兼容IE7及以下,解决兼容性问题:使用json2.js。
var obj = {
name:"张三",
age:[1,2,3],
y:null,
o:{name:"李四"},
sing:function(){
alert("song");
}
}
console.log(JSON.stringify(obj));
var json = '{"name":"lisi"}';
var json2 = '["name","age","王五"]';
var json3 = "你好";
var json4 = "123";
console.log(JSON.parse(json));
网友评论