一. 基础部分
Ⅰ 预解析
Ⅱ 代码执行
预解析:JS引擎会把JS里所有的var、function提升到作用域的最前面
预解析又分为:
Ⅰ 变量预解析(变量提升)[其中:变量提升就是把所有的变量声明提升到当前作用域的最前面,而不提升赋值操作]
Ⅱ 函数预解析(函数提升)
eg: console.log(num); // undefined
var num = 10;
执行过程:1.var num;
2. console.log(num);
3.num = 10;
注意:函数体内部的变量没有用var声明的是全局变量。
声明多个值相等的变量可以安照如下简写
var a = 9;
var b = 9;
var c = 9;
====>
var a = b = c = 9;
A. 字面量方式
var obj = {}; // 创建一个空对象
var userObj = {
name: ‘Tom‘,
age: 18,
gender: ‘男‘,
sayHi: function(){
console.log(‘Hi‘);
}
}
注意:属性和方法都是采用键值对的形式
调用属性:a.对象名.属性名 b.对象名[‘属性名‘]
调用方法:对象名.方法名()
B.利用 new Object() 创建
var obj = new Object();
obj.name = ‘Tom‘;
obj.age = 18;
obj.sayHi = function(){};
C.构造函数来创建
function Star(name, age, gender){
this.name = name;
this.age = age;
this.sex = sex;
}
var Tom = new Star(‘Tom‘, 18, ‘男‘);
注意:a. 构造函数第一个单词必须大小
b. 调用构造函数必须用new
c. 调用构造函数后会自动返回一个对象(不需要再构造函数中写return)
拓展:构造函数类似Java中的类,将对象中的公共属性和方法抽取出来
遍历对象的方法 for ... in
for(var k in obj){
console.log(k+‘--‘+obj[k]); // 属性名--属性值
}
A.日期函数
1.旧方式
var date = +new Date() ==> 返回当前的毫秒数(时间戳)
date.valueof();
date.getTime();
2.新方式
Date.new(); (H5新增方法)
应用:倒计时算法(时间戳的差值)
B. 数组函数
a. 判断数组是否是数组的方法
①arr instanceof Array
②Array.isArray(arr) ==> IE9以上才支持
b. 添加数组元素的方法
① push:再数组末尾添加一个或多个元素,返回结果为新数组的长度(参数为添加的元素)
② unshift:在数组前面追加一个或多个元素
(参数为添加的元素)
c. 删除数组元素
① pop:删除最后一个元素,一次只能删除一个元素(无参数),返回值为删除的那个元素
② shift:删除第一个元素,返回删除的元素(无参数)
数组转换为字符串的方法
① toString()
② join() 参数可选,分隔符(表示数组每个元素之间的分隔符号,示例如下)
eg: var strArr = {‘a‘,‘b‘,‘c‘};
strArr.join(‘-‘); // ‘a-b-c‘
C.其他函数
①concant() 连接多个数组,不影响原数组
②slice() 数组截取 slice(begin, end),生成被截取的新数组
③splice() 数组删除 splice(begin, end),返回被删除项目的数组,会影响原数组
A.基本数据类型赋值
var a = 1; var b = a;
在栈中重新开辟了一个空间,并把值复制了一份,两个变量互不影响
原文:https://www.cnblogs.com/Song-rui/p/13982772.html