JavaScript(四)——对象
一、Js的数据类型
(1)String 字符串
(2)Number 数值
(3)Boolean 布尔值
(4)Null 空值
(5)Undefined 未定义
以上五种属于基本数据类型,以后我们所看到的值除了以上五种,全是对象
(6)Object 对象
1、基本数据类型
基本数据类型都是单一的值,值与值之间没有任何联系
eg:123 “你好”
如果使用基本数据类型的数据,我们所创建的变量都是独立的,不能成为一个整体
2、对象
对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性
二、对象
1、对象的分类
a、内建对象:由ES标准中定义的对象,在任何ES的实现中都可以使用
比如:Math,String,Number,Boolean,fouction,object
b、宿主对象:由JS的运行环境提供的对象,目前来讲主要是指由浏览器提供的对象
比如:BOM、DOM(console.log()中的console)
c、自定义对象:由开发人员自己创建的对象
2、自定义对象
(1)创建对象:使用new关键字调用的函数,是构造函数constructor,构造函数是专门用来创建对象的函数
使用typeof检查一个对象时,会返回object
var obj = new Object();//创建对象并且赋值给obj
console.log(typrof obj);//object
(2)向对象中添加属性
在对象中保存的值称为属性
语法:对象。属性名 = 属性值
obj.name = "lyq";
obj.age = 22;
(3)读取对象中的属性
语法:对象.属性
console.log(obj.name)
如果读取对象中没有的属性,不会报错,而是会返回undefined
(4)修改对象的属性值
语法:对象.属性名 = 新值
(5)删除对象的属性
语法:delete 对象.属性
3、属性名和属性值
(1)属性名:对象的属性名不强制要求标识符的规范,但尽量遵守
如果要使用特殊的属性名,不能采用.的方法来操作,需要用另一种方式:
语法:对象[“属性名”] = 属性值
读取时也需要采用这种方法
obj["123"] = 789;
console.log(obj["123"]);
使用[]这种形式去操作属性,更加灵活
在[]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
obj["123"] = 789;
var n = "123";
console.log(obj[n);
(2)属性值:可以是任意的数据类型,甚至可以是一个对象
in运算符:可以通过该运算符可以检查一个对象中是否含有指定的属性
如果有则返回true,没有则返回false
语法:“属性名” in 对象
三、引用数据类型
object
Js中的变量都是保存在栈内存中的
基本数据类型的值都是直接在栈内存中存储,值与值之间都是独立存在的,修改一个变量不会影响到其他的变量
对象是保存在堆内存中,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量改变属性时,另一个也会受到影响
var obj = new object();
obj.name = "lyq"
var obj2 =obj;
obj.name="yq";
console.log(obj.name);//yq
console.log(obj.name);//yq
var obj = new object();
obj.name = "lyq"
var obj2 =obj;
obj2 =null
console.log(obj);//lyq
console.log(obj2);
当比较两个基本数据类型时,就是比较值
而比较两个引用数据类型时,它比较的是对象的内容地址,如果两个对象一模一样,但是地址不同,它也会返回false
四、对象字面量
使用对象字面量来创建一个对象
var obj = {};
obj.name = "lyq";
console.log(obj.name);//lyq
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值…}