JavaScript
对象
-
你对对象有什么了解吗?
对象是什么?对象就好比一个人,一个人身上有手有脚,有嘴巴。人可以用手来写字,用脚来走路,用嘴来说话。对象具备了人的某种特质,只不过他把人的手脚、嘴巴等组成称之为属性,产生的动作称之为行为。
-
对于对象我们该如何定义它?
对象是通过使用花括号包围它的属性以及属性值或方法名以及函数进行定义,例如:
let 对象名={属性名:属性值 ,``方法名:函数...}
或者是let 对象名=new Object()
-
如何使用对象?
一个人将头发由黑色染成了黄色,是不是头发属性发生了变化?
由于发生了变化,我们就必须对这个对象做修改,这个人我们要说明是谁,假设是小明,小明的头发颜色变黄色了,对属性的修改就是要指明对象名、属性名,故我们选择用对象名.属性名来指明,并将修改的值放在等号右边。可以写成
小明.头发颜色=‘黄色’
。他的语法为对象名.属性名=修改的值
.我们想要查找小明脸上是不是有一颗痣,就可以直接指明小明这个对象,再选择他的脸属性来检查。可以写成
小明.脸
.他的语法为对象名.属性名。
我们还要考虑属性名含有特殊符号时,特殊符号可以是’-‘等,有一种新的方式就是用‘[]’操作,可以这样写对象['-属性名']
记住是用引号(单引号和双引号都行)包含特殊符号和属性名。当然也可以选择不加引号,不加引号会被当成变量解析,但是有特殊符号的时候得加,不然会出现NaN.结论:没有必要的时候直接使用点语法, 在需要解析变量的时候使用 [] 语法。现在我们想要给小明增加一些新的属性就比如要给他戴上眼镜。就可以写成
小明.眼镜='黑色'
,他的语法为对象名.新属性=值
.小明做了激光手术,这样他是不是就可以不用再戴眼镜,那要把眼镜这个属性摘掉,就可以写成
delete 小明.眼镜
,他的语法为delete 对象名.属性
. -
对象中的方法(行为)该如何描述?
首先我们说对象中的方法就是一种行为,将对象当成是一个人看待,把人用脚行走的行为称之为走路,所以我们描述行为的时候也要为行为取一个名字,该行为具体是什么样的呢?行为一般表示动词,在计算机上本质是一个函数。所以函数里面描述该行为是如何操作的,就比如说走路,一般来说我们是先迈右脚,再迈左脚,如此循环,到达目的地便可以控制它停下来。函数里面就是用来描述该行为的过程。所以对象的方法是先给行为取名,后有一个函数描述该行为的过程。他的语法为:
方法名:function(){描述该行为的过程}
。注意:方法名一般情况下省略""或’',除非名称中遇到特殊符号,如空格、中横线等。function()中的括号里面可以加上参数,这是为了方便调用函数时接收实参,就比如说吧,有个方法名叫做走路,那么描述该方法的语法为:走路:function(形参){}
-
对象中的方法如何使用?
与使用对象属性的方式相似,可以直接写成
对象名.方法名()
,很好理解就是一个对象有属性也有行为,想用属性就呼叫对象的属性名对象名.属性名
,想用方法时就呼叫对象方法名对象名.方法名()
.不过方法还需要加上括号。括号里面必要时会加上参数(该参数称之为实参)。 -
对象中的多个属性值如何获取?
前面的对象名.属性名只能获得一个属性的值,无法获取到其他的属性值。但是我们想要获取整个对象的所有属性值该如何获取?答案就是使用遍历,遍历的语法:for in .例如:for (let x in 小明)。其中得x就是一个变量,在这遍历过程中依次代表的是对象的属性,要是想得到属性值,还是得用到前面的
对象名.属性名或者对象[属性名]获取属性值
,所以使用小明[x]
就能得到小明中的所有属性值。 -
什么是内置对象,常用的内置对象有哪些?
对于常用到的对象,JavaScript早就为我们提供了,这类对象我们称之为内置对象。注意:内置对象就是JavaScript事先帮我们定义好的对象,里面包含了各种属性和方法供开发者调用。
常用得内置对象有:document.write()、console.log()、Math等。注意:黑体的才是对象。
-
内置对象Math的常用方法有哪些?
Math对象中定义的很多方法值得我们去学习。它提供了很多进行数学运算的方法。比如:random(求随机数)、ceil(向上取整)、floor(向下取整)、max(求最大数)、min(求最小数)、pow(幂运算)、abs(绝对值)。
Math.random()随机数函数,返回的是一个0–1之间的、并且包括0不包括1的随机小数[0,1).
Math.floor()向下取整,无论是3.4、3.9结果都会是3,它的作用就是将小数点后面的数去掉,保留整数。
知道了这两个方法的使用后,我们就可以利用它们俩来生成任意随机数了。例如生成一个小于6的数字,就可以写成
Math.random()*(5+1)
,为什么这样写呢?理由是random()始终生成的是一个小于1的数,当一个小于1的数与某一个数相乘时,其结果就不可能大于或者等于该数字。回到例子,(5+1)的结果是6,6乘以一个小于1的数,其结果肯定始终小于6.若是想要获取3-8之间的任意一个数,就可以写成Math.random()*(5+1)+3.
若是我们想要只取整数,便可以直接用Math.floor()包围Math.random()*(5+1)再加3
即可。这样写:Math.floor(Math.random()*(5+1))+3
.总结:生成N-M之间的随机数Math.floor(Math.random()*(M-N+1))+N
. -
请谈谈简单数据类型与复杂数据类型有何不同?
1.简单数据类型又称为值类型,string、number、boolean、undefined、null都属于简单数据类型。这种简单类型存储的是变量的值。并把它放到栈中。
let num=10
let num2=num
num=20
console.log(num2) //10
2.复杂数据类型又称为引用类型,由new 创建的对象Object、数组Array、Date等系统对象与自定义对象都属于复杂数据类型。复杂数据类型存储的时变量的地址,并把它的地址放到堆中,其值放在堆空间。
let object1={
age:18
}
let object2=object1
object1.age = 20
console.log(object2)//结果为20 堆存放object1的地址,将object1的地址给object2,此时object1与object2的地址是一样的,当修改object1中的age属性值时,object2的age属性值也跟着变。地址一样说明都是指向同一空间。就比如:家里原本有一只猫,后面又买了一只猫。你我共用一个家,我家有多少只猫,你家就有多少只猫。