js复杂数据类型------对象
对象:无序的键值对的集合
创建对象的两种方式
字面量: var student = {};建了一个空对象
内置构造函数 var student = new Object();
对象的赋值和取值
取值:对象名.属性名 ------如果存在,返回响应值;如果不存在,undefined
对象名.方法名------直接获取,返回函数体,对象名.方法名(),即调用这个方法
赋值(类似数组) 对象名.属性名-----存在,直接覆盖,不存在,新建属性,在赋值
操作对象的两种语法
- 点语法 对象名.属性名: 简单方便,不支持变量
- 中括号语法: 对象名[‘属性名’] 灵活,支持字符串和变量
对象名[变量名] :通过变量值找到属性名,然后再去对象里面查找对应的值
对象的遍历
for(var k in obj){……}
k键(属性名) obj[k] 值(属性值)
批量创建对象
- 工厂函数:本质就是一个函数,将创建对象的代码进行封装成函数
特点:创建出来的类型都时Object类型
function createObject()({
var obj = {……};
return onj;
}
注意点:1.返回值---调用时通过传过来的实参对对象进行具体的赋值
对象的方法中,this指的是当前的对象
- 自定义构造函数
特征:需要结合new使用,创建出来的对象有自己的类型
构造函数中new的作用
- 建立一个新对象,并指定类型
- 让构造函数的this指向新建的构造函数
- 执行构造函数
- 返回新对象(实例)
构造函数的特点:
- 构造函数,就是一个函数
- 首字母大写
- Js中内置了一些Array Object
- 可以自定义
补充:值类型和引用类型
值类型(简单数据类型):在变量中存储的是本身,赋值时,赋值的也是值本身,值传递时,传的也是值本身
引用类型(复杂数据类型):在变量中存储的是内存地址,赋值时,赋值的也是内存地址,传递时,传的也是内存地址
注意点:javascript中字符串(string)是个特殊的类型,它是通过传地址来赋值和传递,但是它是通过传值比较的