文章目录
一、预解析
-
js引擎运行js分为两步:预解析和代码执行。
预解析:js引擎会把js里面所有的var 还有function提升到当前作用域的最前面
代码执行:按照代码书写的顺序从上往下执行 -
预解析分为变量预解析(变量提升)和函数预解析(函数提升)
变量提升:是把所有的变量声明提升到当前的作用域最前面 不提示赋值操作。
函数提升:就是把所有的函数声明提升到当前作用域的最前面 不调用函数
二、对象
- 对象是由属性和方法组成
1.创建对象的三种方式
- 1.利用对象字面量创建对象{}
- 2.利用new Object()创建对象:利用等号赋值的方法添加对象的属性和方法,每个属性和方法用分号结束。
<script>
// 利用 new Object 创建对象
var obj = new Object(); // 创建了一个空的对象
obj.uname = '张三疯';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function() {
console.log('hi~');
}
// (1) 我们是利用 等号 = 赋值的方法 添加对象的属性和方法
// (2) 每个属性和方法之间用 分号结束
console.log(obj.uname);
console.log(obj['sex']);
obj.sayHi();
</script>
- 3.利用构造函数创建对象
// function 构造函数名() {
// this.属性 = 值;
// this.方法 = function() {}
// }
// new 构造函数名();
- 构造函数名字首字母要大写
- 构造函数不需要return就可以返回结果
- 调用构造函数必须使用New
- 属性和方法前面必须加this
构造泛指某一大类,对象是指一个具体事物。
2.遍历对象
for…in 遍历对象 (遍历的是对象的属性名)
三、内置对象
- JS中的对象分为三种:自定义对象,内置对象(Math、Date、Array、String等),浏览器对象。
- 查文档(MDN)使用内置对象
- Math.floor() 向下取整、Math.ceil()向上取整、Math.round()四舍五入 round(-1.5) = -1往大了取
- Data()日期对象 是一个构造函数,必须使用new来调用创建我们的日期对象 new Date(),实例化以后才能使用。
- +new Date() 返回总的毫秒数()与1970年1月日相差的毫秒数
四、数组对象
1.创建数组的两种方式
- 利用数组字面量 var arr = [1,2,3]
- 利用new Array()
var arr1 = new Array(2, 3); //等价于创建两个数组元素[2,3]
2.监测是否为数组
-
instanceof 运算符,检测是否为数组
-
Array.isArray()
3.添加删除数组元素
- push(): 在数组的末尾添加一个或多个数组元素,push完毕之后返回的是新数组的长度,原数组也会变化
- unshift() :在数组开头添加一个或多个数组元素,unshift完毕之后返回的是新数组的长度,原数组也会变化
- pop():可以删除数组的最后一个元素(一次只能删除一个元素),pop之后返回的结果是删除的那个元素,原数组也会发生变化。
- shift():可以删除数组的第一个元素(一次只能删除一个元素),shift之后返回的结果是删除的那个元素,原数组也会发生变化。
4.数组排序
- 翻转数组:reverse()
- 数组排序:sort()
var arr = [1, 7, 55, 66 ,24];
arr.sort(function(a, b){
return a - b; //按照升序排序
return b - a; //按照降序排序
})
5.获取数组索引
- indexOf(数组元素) : 返回数组元素的索引号,没有返回-1,有多个返回第一个
- lastIndexOf:倒着查,从后面开始查,注意元素的索引还是不变,第一个元素索引还是0
6.数组去重
- 遍历旧数组,然后拿着旧数组的元素去查询新数组(利用indexOf查询),如果新数组中没有该元素,就把该元素添加到新数组中。
7.数组转换为字符串
- toString() 将数组转换为字符串
- join(分隔符) arr.join(‘-’)
- concat() 连接两个或多个数组,不影响原数组。
- 数组截取slice(begin,end)
- splice() 数组删除 splice(第几个开始,要删除的个数)
五、字符串对象
字符串不可变(内存空间),所以不要大量拼接字符串
1.根据字符返回位置
- indexOf: str.indexOf(‘要查找的字符’,[起始的位置])
- lastIndexOf:从后查找
2.根据位置返回字符
- charAt(index)
- charCodeAt(index) 返回相应索引号的字符ASCII值 目的:判断用户按了哪个键
- str[index] H5新增的
3.字符串操作方法
- concat(str1,str2,str3…)用于连接两个或多个字符串
- substr(start, length) 从start位置开始,length截取几个字符
- replace(‘被替换的字符’,‘替换的字符’),替换字符,只会替换第一个字符
- 字符转化为数组 split(’分隔符‘)
五、简单数据类型和复杂类型
简单数据类型null 返回的是一个空对象
- 简单数据类型放在栈里面的(存的是值),复杂数据类型放到堆里面(栈中存地址,这个地址指向堆里面的数据)。
- 把引用类型的变量传给形参时,其实是把变量在栈空间里保存的地址复制给了形参