[day4]JavaScript 对象—对象的分类、对象的基本操作、基本数据类型和引用数据类型、对象字面量

1. 对象的简介

1) js中的数据类型
  • String 字符串

  • Number 数值

  • Boolean 布尔值

  • Null 空值

  • Undefined 未定义

    ​ 以上五种数据类型属于基本数据类型,

    ​ 以后我们看到的值只要不是以上五种,全是对象

  • Object 对象

基本数据类型都是单一的值"hello" 123 true,值和值之间没有任何联系。

eg:在js中表示一个人的信息(name gender age)

 var name = "孙悟空";
 var gender = "男";
 var age = 18;

如果使用基本数据类型的数据,我们所创建的对象都是独立,不能成为一个整体。

对象属于一种复合数据类型,在对象中可以保持多个不同数据类型的属性。

2) 对象的分类
1. 内建对象

​ - 由ES标准中定义的对象,在任何的ES的实现中都可以使用

​ 比如:Math String Number Boolean Function Object……

2. 宿主对象

​ - 由js的运行环境提供的对象,目前来讲主要指由浏览器提供的对象

​ 比如:BOM DOM 两组对象

​ eg:console.log(); 中 console是一个对象

​ document.write(); 中document是一个对象

​ 这些对象我们并没有创建,是由浏览器提供的

3. 自定义对象

​ - 由开发人员自己创建的对象

2. 对象的基本操作

1) 创建对象

使用new关键字调用函数,是构造函数constructor

构造函数是专门用来创建对象的函数

使用typeof检查一个对象时,会返回object

var obj = new Object();//创建对象
console.log(obj);
console.log(typeof obj);
2) 添加属性

在对象中保存的值为属性

​ 语法:对象.属性名 = 属性值

//向obj中添加一个name属性
obj.name = "齐天大圣";
//向obj中添加一个gender属性
obj.gender="男";
//向obj中添加一个age属性
obj.age=18;
3) 读取属性

语法:对象.属性名

如果读取对象中没有的属性,不会报错而是会返回undefined

console.log(obj.name);  //齐天大圣
console.log(obj.hello);  //undefined
4) 修改属性

语法:对象.属性名 = 新值

obj.name = "tom";
5) 删除属性

语法:delete 对象.属性

delete obj.name;

3. 属性名和属性值

1) 属性名

​ - 对象的属性名不强制要求遵守标识符规范,但是我们使用时还是尽量按照规范去做

​ 任何乱七八糟的名字都可以使用

obj.name="孙悟空";
obj.var="hello";

如果要使用特殊的属性名,不能用.的方式来操作

需要使用另一种方式:

​ - 语法:对象[“属性名”]=属性值

​ 读取时也需要采用这种方式

//obj.123=789;
obj["123"]=789;
console.log(obj["123"]);
obj["^&*%&%$%^$^"]="你好";
console.log(obj["^&*%&%$%^$^"]);

使用[]这种形式去操作属性,更加灵活。在[]中可以直接传递一个变量,这样的变量值是多少就会读取那个属性

obj["123"]=789;
obj["nihao"] = "你好";
var n = "123";
//var n = "nihao";
console.log(obj[n]);//789

运算符的优先级:
在这里插入图片描述

2) 属性值

js对象的属性值,可以是任意的数据类型

obj.test = "hello";
obj.test = 123;
obj.test = true;
obj.test = null;
obj.test = undefined;
console.log(obj.test);

甚至也可以是一个对象

//创建一个对象
var obj2 = new Object();
obj2.name="tom";
//将obj2设置为obj的属性
obj.test = obj2;
console.log(obj.test.name);
3) in运算符

- 通过该运算符检查一个对象中是否有指定的属性

​ 如果有则返回true,没有则返回 false

​ 语法 :

​ “属性名” in 对象

//检查obj中是否含有test2属性
console.log(obj.test2);
console.log("test2" in obj);
console.log("test" in obj);
console.log("name" in obj);

4. 基本数据类型和引用数据类型

js中的变量都是保存到 栈内存 中的

1) 基本数据类型

String Number Boolean Null Undefined

var a = 123;
var b = a;
a++;
console.log("a="+a);//124
console.log("b="+b);//123

它们的值是独立的。

基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他变量。
在这里插入图片描述

2) 引用数据类型

Object

var obj = new Object();
obj.name = "孙悟空";
var obj2 = obj;
//修改obj的name属性
obj.name = "猪八戒";
console.log(obj.name);
console.log(obj2.name);

它们的值一起改变。

对象是保持到堆内存中,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保持的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响。
在这里插入图片描述

//设置obj2为null
obj2 = null;
console.log(obj);
console.log(obj2);

在这里插入图片描述

链接断开了,但obj不受影响。



var c = 10;
var d = 10;
console.log(c==d); //true

var obj3 = new Object();
var obj4 = new Object();
obj3.name = "沙和尚";
obj4.name = "沙和尚";
console.log(obj3);
console.log(obj4);
console.log(obj3==obj4); //false

当比较两个基本数据类型的值时,就是比较值。 而比较两个引用数据类型的值时,是比较对象的内存地址。如果两个对象是一模一样的,但是地址不同,它也会返回false
在这里插入图片描述

5. 对象字面量

使用对象字面量来创建一个对象

var obj = {};
obj.name = "孙悟空";
console.log(obj.name);

​ 使用对象字面量可以在创建对象时,可以直接指定对象中的属性

 语法:{属性名:属性值,属性名:属性值……}

​ 对象字面量的属性名可以加引号也可以不加,建议不加。如果要使用一些特殊的名字,则必须加引号。

​ 属性名和属性值是一组一组二的名值对结构,

​ 名和值之间使用":“连接,多个名值对之间使用”,"隔开。

​ 如果一个属性之后没有其他属性了,就不要写","。

var obj2={
    "name":"猪八戒",
     age:800,
     gender:"男"
     test:{name:"沙和尚"}  
};
console.log(obj2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真不会coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值