一、对象的声明
- 声明一个简单对象
let obj = {
name: '小明',
age: 18,
}
二、对象的组成
对象一般由属性和方法组成
- 对象的属性
let obj = {
name: '小明',
age: 18,
}
(name: ‘小明’)即为obj这个对象的一个属性,其中name为属性名,'小明’为属性值。
- 对象的方法
let obj = {
name: '小明',
age: 18,
sing: function () {
return '若把你'
},
}
(sing: function (){})即为obj这个对象的方法,其中sing为方法名,function (){}为方法函数。
三、对象的增、删、查、改
- 对象的增
let obj = {
name: '小明',
age: 18,
sing: function () {
return '若把你'
}
}
对象名.新方法名=新方法
obj.sing2 = function () {
return '一直很安静'
}
let obj = {
name: '小明',
age: 18,
sing: function () {
return '若把你'
},
sing2: function () {
return '一直很安静'
}
}
- 对象的删
let obj = {
name: '小明',
age: 18,
sing: function () {
return '若把你'
}
}
delete 对象名.方法名
delete obj.sing//删除obj里的sing方法
let obj = {
name: '小明',
age: 18,
}
- 对象的查
let obj = {
name: '小明',
age: 18,
sing: function () {
return '若把你'
}
}
对象的查有两种写法
写法1(点语法):对象名.属性名
console.log(obj.name);//'小明'
写法2(中括号语法):对象名[‘属性名’]
console.log(obj['name'];//'小明'
注意点:
1.对象查的语法有2种,[ ]可以解析特殊符号而点语法不行。
2.中括号的语法需要添加引号,可以是单引号也可以是双引号。
3.中括号语法可以解析变量,而点语法不行。
示例:
let obj = {
name: '小明',
age: 18,
'ai-hao': '打羽毛球'
sing: function () {
return '若把你'
},
}
console.log(obj.ai-hao);//报错
console.log(obj['ai-hao'];//'打羽毛球'
- 对象的改
let obj = {
name: '小明',
age: 18,
'ai-hao': '打羽毛球'
sing: function () {
return '若把你'
},
}
对象名.方法名 = 新方法
obj.sing = function () {
return '盛夏的果实'
}
let obj = {
name: '小明',
age: 18,
'ai-hao': '打羽毛球'
sing: function () {
return '盛夏的果实'
},
}
四、遍历对象
- 遍历简单对象
let obj = {
name: '小明',
age: 18,
sing: function () {
return '若把你'
}
}
for (let k in obj) {
console.log(k);//打印属性名或方法名-k是对象的属性名或方法名(字符串格式,同时是一个变量)
console.log(obj[k]);//打印属性值或方法
}
- 遍历数组对象
let students = [
{ name: '小明', age: 18, gender: '男', hometown: '河北省' },
{ name: '小红', age: 19, gender: '女', hometown: '河南省' },
{ name: '小刚', age: 17, gender: '男', hometown: '山西省' },
{ name: '小丽', age: 18, gender: '女', hometown: '山东省' }
]
for (let i = 0; i < students.length; i++) {
console.log(students[i]);//遍历数组里的每一项对象
console.log(students[i].name);//遍历数组里的每一项对象的名字
}
五、内置对象
内置对象:js提前准备好的对象
console.log()
document.write()
**我们最常用的控制台打印和页面打印其实都为内置对象**
数学内置对象
- Math.PI-圆周率
console.log(Math.PI);//3.141592653589793
- Math.ceil()-向上取整
console.log(Math.ceil(1.1));//2
- Math.floor()-向下取整
console.log(Math.floor(1.1));//1
- Math.max()-取最大值
console.log(Math.max(1, 2, 3, 4, 5, 6));//6
- Math.min()-取最小值
console.log(Math.min(1, 2, 3, 4, 5, 6));//1
- Math.pow()-获取次方
Math.pow(基准值,次方)
console.log(Math.pow(2, 2));//4
- Math.round()-四舍五入
console.log(Math.round(1.4));//1
console.log(Math.round(1.5));//2
- Math.random()-生成[0 ,1)的随机数(重点)
console.log(Math.random());//0
console.log(Math.random());//0.999999999
六、对象存储路径
栈:基本数据类型的数据-变量的值和本身都放在栈内存里,除非重新赋值,不然值不会受到其他变量影响。
let age = 10
let age2 = age
age2 = 20
console.log(age);//10
堆:复杂数据类型(对象)的数据-值存堆内存里、地址存栈内存里,当有其他对象通过地址修改属性时,修改会生效。
let obj = {
age: 10,
name: '张三'
}
let obj2 = obj
obj2.age = 20
obj2.name = '李四'
console.log(obj.age);//20
console.log(obj.name);//李四