一、对象的介绍
1、JavaScript中数据类型:
-String 字符串
-Number 数组
-Boolean 布尔值
-Null 空值
-Undefined 未定义
以上五种类型属于基本数据类型,我们看到的值,只要不是上面的五种,剩下的全都是Object 对象,
基本数据类型都是单一的值“hello” 123 ture,值与值之间没有任何的联系,如果使用基本数据类型的数据,我们所创建的变量都是独立的,不能称为一个整体,信息与信息之间没有关系。
2、对象的概念
对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性,让信息与信息之间有联系,关系明确,操作起来也更加方便
在 JavaScript 中,对象是拥有属性和方法的数据。属性是对象相关的值,方法是对象可以执行的动作。
3、对象的分类:
1.内建对象--有ES标准中定义的对象,在任何的ES的实现中都可以使用,eg:Math String Boolean function object
2:宿主对象--由JS的运行环境提供的对象,目前来讲,主要指浏览器提供的对象,eg:BOM(浏览器对象模型) DOM(文档对象模型) 两组对象,里面各自都有很多
3:自定义对象--由开发人员创建的对象
二、对象的基本操作
1:创建对象
使用new关键字调用的函数,就是构建函数constructor,构建函数是专门用来创建对象的函数
使用typeof检查一个对象时,则会返回object
var obj = new Object();
2:向对象添加属性
在对象中保存的值称为属性
语法:对象.属性名=属性值;
obj.name = "张三";//向obj中添加一个name属性,name属性值为'张三'
obj.gender = "男";//向obj中添加一个gender属性
obj.age = 18;//向obj中添加一个age属性
3:读取对象中的属性
语法:对象.属性名
如果读取对象中没有的属性,不会报错,而会返回undefined
4: 修改对象的属性值
语法:对象.属性名=新值
obj.name = "jack";
5: 删除对象的属性
语法:delete 对象.属性名
delete obj.name;//删除name属性
console.log(obj.name)//undefined
三、对象属性名及属性值
1:属性名:
—对象的属性名不强制性要求遵守标识符号的规范,什么名字都可以使用
—但是我们使用还是尽量按照标识符的规范去做
—如果要使用特殊的属性名,例如数字,不能采用"."的方式来操作,需要使用另一种方式'[]':
语法:对象["属性名"]=属性值
读取时也需要采用这种方式,使用[]这种形式去操作属性,更加灵活,在[]中可以直接传递一个变量,这样变量值是多少就会读哪个属性
2:属性值
JS对象的属性值,可以是任意的数据类型,甚至可以是对象
3: in运算符
-通过该运算符可以检查一个对象中是否含有指定的属性,如果有则返回true,没有则返回false
-语法:"属性名" in 对象
<script>
var obj=new Object();
obj.name="tom";//向对象中添加属性
obj["123"]='你好';
var n='123'//把'123'属性赋值给n
console.log(obj[n]);//读取obj的'123'属性
obj.test=true;
obj.test=undefined;
obj.test="true";
obj.test=123;
// 创建一个对象
var obj2=new Object();
obj2.name="猪八戒";
obj.test=obj2;
console.log(obj.test);//{name:'猪八戒'}
console.log(obj.test.name);//'猪八戒'
//检查obj中是否含有test2属性
console.log("test2" in obj); //false
console.log("test" in obj);//true
</script>
四、基本数据类型和引用数据类型
基本数据类型:String Number Boolean Null Undefined
引用数据类型:Object
JS中的变量都是保存到栈内存里的
1,基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量
2,引用数据类型的值直接保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址(对象的引用)
如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响,当我们比较两个基本属性类型的值时,就是比较值,而比较两个引用数据类型时,它是比较对象的内存地址,如果两个对象时一模一样的,但是地址不同,他也会返回false
<script>
var a=123;
var b=a;
a++;
console.log("a="+a);//124
console.log("b="+b);//123
var obj=new Object;
obj.name='java';
var obj2=obj
// 修改obj的name值
obj.name='web'
console.log(obj.name);
console.log(obj2.name);
</script>
5、对象字面量
使用对象字面量,可以在创建对象时,直接指定对象中的属性
——语法:{属性名:属性值,属性名:属性值...}
对象字面量的属性名,可以加引号,也可以不加,建议不加,如果要使用一些特殊的名字,必须要加引号
——属性名和属性值是一组一组的名值队结构,名和值之间使用:链接,多个名值对的使用“,”隔开
如果一个属性之后没有任何其他属性了,就不要写了
<script>
//第一种方式:创建对象
var obj = new Object();
//第二种方式:使用对象字面量,来创建一个对象
var obj = {};
obj.name = "zhangsan";
var obj2 = {
name: "猪八戒",
age: 28,
gender: "男",
test: {
name: "沙和尚",
},
};
</script>