Javascript第五天:对象
对象(object):JavaScript里的一种数据类型
对象使用:
-
对象声明语法:
<script> // 声明了一个obj的对象 let obj = { } </script> -
对象有属性和方法组成操作对象:
-
属性:信息或叫特征(名词)
-
方法:功能或叫行为(动词)
<script> let 对象名 = { 属性名:属性值, 方法名:函数 } </script>
-
-
属性:
-
属性都是成 对出现的,包括属性名和值,它们之间使用英文 : 分隔
-
多个属性之间使用英文 , 分隔
-
属性就是依附在对象上的变量(外面是变量,对象内是属性)
-
属性名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
<script> let person={ uname:'小明', age:18, sex:'男' } </script>
-
-
属性访问:
-
声明对象,并添加了若干属性后,可以使用 . 或 [] 获得对象中属性对应的值,我称之为属性访问。 简单理解就是获得对象里面的属性值。
<script> let person={ uname:'小明', age:18, sex:'男' } // 第一种方法:直接对象名加属性名中间用.隔开 console.log(person.uname) // 第二种方法:用对象名加中括号里面用引号包裹属性名 console.log(person['age']) </script>
-
-
对象中的方法:
-
方法是由方法名和函数两部分构成,它们之间使用 : 分隔
-
多个属性之间使用英文 , 分隔
-
方法是依附在对象中的函数
-
方法名可以使用 "" 或 '',一般情况下省略,除非名称遇到特殊符号如空格、中横线等
<script> let person={ uname:'小明', age:18, sex:'男', sayHi:function () { document.write('hi'); } } </script>
-
-
对象中的方法访问:
注意: 千万别忘了给方法名后面加小括号
<script> let person={ uname:'小明', age:18, sex:'男', sayHi:function () { document.write('hi'); } } // 对象名.方法名() person.sayHi() </script>
操作对象:
-
查询对象
1.对象.属性 或者 对象[‘属性’] 2.对象.方法()
-
重新赋值
1.对象.属性 = 值 2.对象.方法 = function() {}
-
对象添加新的数据
1.对象名.新属性名 = 新值
<script> let person={ } person.dance='跳舞' person.sing='唱歌' console.log(person); </script> -
删除对象中属
1.delete 对象名.属性名
遍历对象:
对象没有像数组一样的length属性,所以无法确定长度
对象里面是无序的键值对, 没有规律. 不像数组里面有规律的下标
<script>
let person = {
}
person.dance = '跳舞'
person.sing = '唱歌'
for (let k in person) {
// 查看属性
console.log(k);
// 查看属性值
console.log(person[k]);
}
</script>
内置对象:
- random:生成0-1之间的随机数(包含0不包括1)
- ceil:向上取整
- floor:向下取整
- max:找最大数
- min:找最小数
- pow:幂运算
- abs:绝对值
<script>
// 如何生成0-10的随机数呢?
let numb1 = Math.round(Math.random() * 10)
console.log(numb1)
// 如何生成5-10的随机数
let numb2 = Math.round(Math.random() * 5 + 5)
console.log(numb2);
// 如何生成N-M之间的随机数
let numb3 = Math.round(Math.random() * (M - N) + N)
console.log(numb3);
</script>
函数调用表达式
<script>
// 函数随机数表达式
function getNumb(min, max) {
return Math.round(Math.random() * (max - min) + min)
}
// 0-10随机数
console.log(getNumb(0, 10));
</script>
拓展-术语解释:
-
关键字:在JavaScript中有特殊意义的词汇
-
let、var、function、if、else、switch、case、break
-
-
保留字:在目前的JavaScript中没意义,但未来可能会具有特殊意义的词汇
-
int、short、long、char
-
-
标识(标识符):变量名、函数名的另一种叫法
-
表达式:能产生值的代码,一般配合运算符出现
-
10 + 3、age >= 18
-
-
语句:一句代码也称之为一条语句,一般按用途还会分类:输出语句、声明语句、分支语句
拓展- 基本数据类型和引用数据类型:
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
-
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型 string ,number,boolean,undefined,null
-
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型 通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈; 简单数据类型存放到栈里面 2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。 引用数据类型存放到堆里面
简单类型的内存分配:
- 值类型(简单数据类型): string ,number,boolean,undefined,null
- 值类型变量的数据直接存放在变量(栈空间)中
复杂类型的内存分配:
- 引用类型(复杂数据类型):通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
- 引用类型变量(栈空间)里存放的是地址,真正的对象实例存放在堆空间中