什么是对象?
在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的。
属性:事物的特征,在对象中用属性来表示(常用名词)
方法:事物的行为,在对象中用方法来表示(常用动词)
比如说小米手机
小米手机的屏幕大小,颜色,重量,厚度都是属性
玩游戏,发短信,听歌都是方法
为什么需要对象?
保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组。
比如,我们以后会经常使用这种方法,这里我们先了解一下
let arr = [{},{},{},{},{}]
我们可以在数组里面声明多个对象,用对象展示数据我们JS中的对象表达结构更清晰,更强大。
利用字面量创建对象
就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法;
let obj = {
name:"薛之谦",
sex:"男",
age:28,
height:180
}
这里我们注意
键:相当于属性名
值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)
属性和值要用 : 隔开,多个属性用,逗号隔开
对象的使用
属性--查
第二种要牢记,开发时我们会经常使用
console.log(star.name) // 调用名字属性
console.log(star['name']) // 调用名字属性
属性--改
语法:对象名.属性 = 新值
let zhangsan = {
uname: '薛之谦',
age: 18,
gender: '女'
}
// 改 把性别的女改为男
zhangsan.gender = '男'
console.log(zhangsan)
属性--增
语法:对象名.新属性 = 新值
let zhangsan = {
uname: '薛之谦',
age: 18,
gender: '男'
}
// 新增住址 address
zhangsan.address = '上海大别墅'
console.log(zhangsan)
属性--删
语法:delete 对象名.属性名
let zhangsan = {
uname: '薛之谦',
age: 18,
gender: '女'
}
// 删除gender属性
delete zhangsan.gender
console.log(zhangsan)
调用对象的方法
对象.方法名()
let obj = {
uname: '薛之谦',
// 方法
sing: function () {
console.log('刚刚好')
}
}
// 方法调用 对象名.方法名
obj.sing()
这里我们要注意他们之间的区别如下
变量:单独声明赋值,单独存在
属性:对象里面的变量称为属性,不需要声明,调用时要对象名.属性名
函数:单独存在的,通过“函数名()”的方式就可以调用
方法:对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方式就可以调用
遍历对象
我们使用for...in 语句用于对数组或者对象的属性进行循环操作。
for (var k in obj) {
console.log(k); // 这里的 k 是属性名
console.log(obj[k]); // 这里的 obj[k] 是属性值
}
for in 不提倡遍历数组 因为 k 是 字符串
简单数据类型和复杂数据类型
简单类型(基本数据类型、值类型):在存储时变量中存储的是值本身,包括string ,number,boolean,undefined,null
复杂数据类型(引用类型):在存储时变量中存储的仅仅是地址(引用),如 Object、Array、Date等;
堆栈
堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;
简单数据类型存放到栈里面
2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
简单数据类型的存储方式
值类型变量的数据直接存放在变量(栈空间)中
复杂数据类型的存储方式
引用类型变量(栈空间)里存放的是地址,真正的对象实例存放在堆空间中
-
简单数据类型的存储方式
值类型变量的数据直接存放在变量(栈空间)中
复杂数据类型的存储方式
引用类型变量(栈空间)里存放的是地址,真正的对象实例存放在堆空间中