引用数据类型,保存复杂数据类型的容器,它是多个属性和方法(函数)的集合
ECMAScript中的对象其实就是一组数据(属性)和功能(方法)的集合
1)定义对象
1 对象字面量方式
var o = {
name:'terry',
age:12,
sayName:function(){
console.log(this.name)
}
}
以{}作为边界 属性与属性之间用,隔开 属性名与属性值用:隔开
属性名一般不加引号(在一些特殊情况下需要添加引号),属性值为字符串的时候一定要添加引号
2 构造函数方式 构造函数=>Object、Array
创建对象:
var o = new Object() 等价与 var o = {}
o.name => 'tom'
o.age => 12
2)访问对象属性
.点访问符 格式: 对象.属性名
o.name => 'terry'
o.age => 12
[]访问符 格式: 对象['属性名']
o['name'] => 'terry'
o['age'] => 12
3)删除对象属性
delete 对象.属性
4)给对象添加属性
o.gender = '男'
5)Object根构造函数 本质是对象
所有的对象都直接或间接继承Object,都能调用Object原型里面的方法
var o = new Object() o直接继承
var arr = [] var arr = new Array() 间接继承
var p = {
name:'tom'
}
6)对象属性的检测
'属性名' in 检测的对象
'name' in obj(检测的对象) ==>有出true 没有出false
eg:console.log('name' in o1)
7)引用传递和值传递
基本数据类型使用值传递:基本数据类型将值直接保存到内存的栈区中
var a = 1
var b = a
a = 4
b不会变 =1
引用数据类型使用引用传递:引用数据类型的引用地址保存到栈区中,实际的值保存到堆区中,该引用地址指向堆区中的空间
var o = {name:'tom',age:12}
var o1 = o
o1.name = terry
o1.name => terry
8)对象序列化(转换为字符串)
常规转换
obj.toString()
转换为json字符串
JSON.stringify(obj)
查询字符串
name=tom&age=12
var qs = require('querystring') //引入nodejs模块
qs.stringify(obj) => name=tom&age=12
9)增强for循环(for in)
遍历对象 (obj遍历的对象) (k随便起尽量有意义)
for(var k in obj) { var 变量 in 属性名
console.log(k) //属性名
console.log(obj[k]) //属性值
}