JavaScript-对象

复习

JS中数据类型

  • String 字符串
  • Number 数值
  • Boolean 布尔值
  • Null 空值
  • Undefined 未定义

以上这5种类型属于基本类型,以后看到的值,只要不是上边的5种,全部是对象

  • Object 对象

基本类型的不足

基本数据类型都是单一的值,值和值之间没有任何联系。
在JS中来表示一个人的信息(name gender age):

name  = '溏心蛋'
gender = '男'
age = '18'

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

对象

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

对象的分类

  1. 内建对象

由ES标准定义的对象,在任何的ES的实现中都可以使用。
比如:Math String Number…

  1. 宿主对象

由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
比如:BOM DOM

  1. 自定义对象

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

对象的基本操作

创建对象

  • 使用new关键字调用的函数,是构造函数constructor
  • 构造函数是专门 来创建对象的函数
    obj = new Object()

添加属性

在对象中保存的值称为属性
语法
对象.属性名 = 属性值
需求:向obj中添加一个name、gender、age属性
obj.name = '溏心蛋'
obj.gender = '男'
obj.age = 18
图片

读取对象中的属性

语法
对象.属性名
需求:读取name、gender、age属性值
console.log(obj.name)
console.log(obj.gender)
console.log(obj.age)

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

修改对象的属性值

语法
对象.属性名 = 新值
浅试一下
obj.name = '小羊'
condole.log(obj.name)

删除对象的属性

语法
delete obj.name
浅试一下
delete obj.name
condole.log(obj.name)

属性名和属性值

obj.name = '溏心蛋'
属性名:name
属性值:溏心蛋

属性名

  1. 对象的属性名不强制要求遵守标识符的规范,但是使用时还是尽量按照标识符的规范去做。
  2. 如果要使用特殊的属性名,不能采用.的方式来操作;需要使用另一种方式:
    **语法:**对象[‘属性名’]

注意:提取时也需要用同样的方式

obj = new Object()
obj['123'] = '溏心蛋'
console.log(obj['123'])

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

obj = new Object()
obj['123'] = '溏心蛋'
n = '123'
console.log(obj[n])

属性值

  • JS对象的属性值,可以说任意的数据类型
  • 甚至也可以是一个对象
obj1 = new Object()
obj2 = new Object()

obj1.name = '溏心蛋'
obj1.test = obj2

obj2.name = '小羊'
console.log(obj1.test.name) // ‘小羊’

in运算

通过该运算符可以检查一个对象中是否含有指定的属性;
如果有则返回true;没有则返回false
语法
‘属性名’ in 对象
浅试一下
需求:检查obj中是否含有test2属性

// 创建
obj1 = new Object()
obj2 = new Object()

obj1.name = '溏心蛋'
obj1.test = obj2

// 检测
console.log('test2' in obj1)  //  false

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

基本数据类型

  • String
  • Number
  • Boolean
  • Null
  • Undefined

引用数据类型

  • Object

浅试一下:

a = 123
b = a
a++
console.log('a = ' + a) // 124
console.log('b = ' + b) // 123

a和b是两个完全独立的值

obj = new Object()
obj.name = '溏心蛋'
obj2 = obj
obj.name = '小羊'

console.log(obj.name) // '小羊'
console.log(obj2.name) // '小羊'

改变初变量,会跟随着改变

  • 涉及到数据结构中的知识
    JS中的变量都是保存到栈内中的,基本数据类型的值直接在栈内中存储,值与值之间是独立存在,修改一个变量不会影响其他的变量,

对象是保存到堆内存中,每创建一个新的对象,就会在堆内存中创建一个新的空间,二变量保存的是对象的内存地址(对象的引用);
当一个变量都值改变时,另一个也会跟着改变。

obj = new Object()
obj.name = '溏心蛋'
obj2 = obj
obj.name = '小羊'

obj2.name = null

console.log(obj.name) // '小羊'
console.log(obj2.name) // null
  • 当其中一个切断了联系,不会影响第二个的联系
a,b = 1,1
console.log(a == b) // true

obj1 = new Object()
obj2 = new Object()
obj1.name = '溏心蛋'
obj2.name = '溏心蛋'
console.log(obj1 == obj2) // false
  • 当比较两个基本数据类型的值时,就是比较值;
  • 而当两个引用数据类型时,它的比较多对象的内存地址;如果两个对象是一模一样,但是地址不同,它也会返回false

对象字面量

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

obj = {}
console.log(typeof obj) // object

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

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

obj = {name = 'txd' ,
		 gender = '男', 
		 age = 18}

注意:对象字面量的属性命苦呀加引号可以不加,建议不加;
如果要使用一些特殊名字,必须加引号

  • 属性名和属性值是一组一组的名值对结构。名和值之间使用:链接多个名值对之间用, 隔开;如果一个属性之后没有其他的属性了,就不要写,
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

溏心蛋*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值