dayy05 对象
对象
什么是对象
- 对象(object):JavaScript里的一种【数据类型】
- 可以理解为是一种【无序】的数据集合
- 用来描述某个事物,例如描述一个人(可以用来装一个事物具体属性,表示这些属性都于这个事物有联系)
对象使用
对象组成
属性+方法(方法也属于对象的属性,不过是为了条例清晰具体化了出来)

注意事项
- 属性名可以使用 "" 或 ''(字符串),一般情况下省略,除非名称遇到特殊符号如空格、中横线等
let person = {
uname: '张飞',
age:'2000',
sex:'男',
userWord: function (){
console.log('俺也是!!');
},
//属性名是字符串,不遵循变量命名规则
"is a wujiang":function(){
console.log('武将');
}
}
- 多个属性之间使用英文 , 分隔
- 属性就是依附在对象上的变量(外面是变量,对象内是属性)
操作对象
属性访问
let person = {
uname: '张飞',
age:'2000',
sex:'男',
//匿名函数
userWord: function (){
console.log('俺也是!!');
},
"new-pro": 'mate10'
}
写法一:console.log(person.sex);
写法二:console.log(goods["new-pro"]);
调用函数:person.userWord();
注意事项
1.如果使用变量,应该给变量赋值为属性字符串形式
2.使用点名法的时候,属性名不能使用字符串

重新赋值
let goods = {
name : '小米10',
num: 'N02155',
weigh: '0.53kg',
address: '中国',
"new-pro": 'mate10',
userWord: function (){
console.log('专为发烧而生');
},
"is a logo":function(){
console.log('花钱改圆角');
}
}
方法一(点方法):
给属性改值:goods.name = '小米丧尸版';
给方法改值:
goods.userWord = function (){
//这里不能再加()了
console.log('一代更比一代强,专为发烧而生');
}
方法二(括号方法):
给属性改值:goods['new-pro'] = 'pro10';
给方法改值:
goods['is a logo'] =function(){
console.log('花钱改圆角,200万');
}
console.log(goods['is a logo']);
增加属性
注意事项:
-
无论是属性或是方法,同一个对象中出现名称一样的,后面的会覆盖前面的
-
必须在对象中不存在过才能进行重新赋值,否则即是改值
方法一:
给属性增值:goods.list = '骁龙系列';
给方法增值:
goods.tech = function (){
console.log('空间音频,无线聆听新高度,为深度沉浸感而来');
}
goods.tech()
方法二:
给属性增值:goods['specify'] = '三麦克风AI通话降噪';
给方法增值:
goods['is a music'] = function(){
console.log('天籁之音,带你身临其境');
}
console.log(goods['is a music']);
删除属性
注意点:
删除后有返回值,返回值是布尔类型,删除成功就是true,删除失败就是false
遍历对象
使用语句
for in
一定记住: 【key】 是获得对象的属性名,【 对象名[key] 】是获得属性值
let obj ={
uname:'andy';
age:18,
sex:'man'
}
for(let key in obj){
//key可以改名任何其他的字母,但一般使用key指代键值对
console.log(key)//打印出属性名(获得对象属性是 key)
console.log(obj[k]) //打印出属性值(获得对象值是obj[key])
}
遍历对象
注意事项:
1、
内置对象
内置对象Math
Math对象是JavaScript提供的一个“数学高手”对象,提供了一系列做数学运算的方法
let num = Math.random();
console.log(num);
提供的部分方法:
- random:生成0-1之间的随机数(包含0不包括1,也就是无线趋近于1)
//向上取整
num = Math.ceil(num);
console.log("ceil:",num);
- ceil:向上取整
let num1 = Math.random()*10;
num1 = Math.ceil(num1);
console.log("小数点后全进位的上取整:",num1);
- floor:向下取整
let num2 = Math.random()*10;
num2 = Math.ceil(num2);
console.log("小数点后全去删的下取整",num2);
- max:找最大数
// 最大值
console.log('Math.max(32,5,12,89,45,36,99);: ', Math.max(32,5,12,89,45,36,99))
- min:找最小数
let num3 = Math.min(32,5,12,89,45,36,99);
console.log(num3);
综合案例

拓展
堆栈空间
堆(操作系统)
基本数据类型
=简单数据类型=值类型
不可拆分的(string 、 number 、 Boolean等)
存放位置
简单数据类型存放到栈里面
内存分配
访问一个变量:usrAge
- 找到变量指向的栈地址
- 获取栈地址,对应的数据


引用数据类型
=复杂数据类型
Object、Array、function
存放位置
引用数据类型存放到堆里面
内存分配
访问usrObj
- 获取变量栈地址
- 获取栈地址,对应的数据(数据存的是堆中的一个地址)
- 根据这个堆地址,去堆内存中,找到真正的数据


可以理解为共用一个对象
拓展
Var
注意点:
-
var存在变量提升,但只是提升了声明的部分,若有var num = 1,就只提升var num;
-
写在script的var存在于作用域链的Global(即window),但let的好处就是它在哪声明在哪起作用:写在script的let就存在与作用域链的script


- var没有作用域这一概念,只要设置了,就都是全局的人,包括声明在块作用域的变量


const
常量:不能被修改,修改就报错
switch case

forEach
// 专门给数组遍历的
let arr =[454,45456,84878,878];
arr.forEach(function(value,index){
console.log(value);
console.log(index);
console.log('-----------------');
})

浙公网安备 33010602011771号