预解析
1.预解析
JavaScript解析器在运行JavaScript代码的时候分两步:预解析和代码执行
-
预解析:JS 引擎会把 JS 里面所有的var 还有function提升到当前作用域的最前面
-
代码执行:按照代码书写的顺序从上往下执行
1.1 预解析
分为变量预解析(变量提升)和函数预解析(函数提升)
- 变量提升就是把所有的变量声明提升到当前作用域最前面,不提升赋值操作
- 函数提升就是把所有的函数声明提升到当前作用域最前面,不调用函数
JavaScript 对象
1.对象(object)
1.1 什么是对象?
在JS中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等
对象是由属性和方法组成的
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,,在对象中用方法来表示(常用动词)
1.2 为什么需要对象
2.创建对象的三种方式
- 利用字面量创建对象
- 利用 new Object 创建对象
- 利用构造函数创建对象
2.1 利用字面量创建对象
对象字面量:就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法
var obj = {
name: '王一博',
age: 24,
sex: '男',
dancing: function () {
console.log('dancingking');
}
}
(1)里面的属性或者方法采用键值对的形式,键 属性名:值 属性值
(2)多个属性或者方法中间用逗号隔开
(3)方法冒号后面跟的是一个匿名函数
使用对象
console.log(obj.name); //对象名.属性名
console.log(obj['age']); //对象名['属性名']
obj.dancing(); //对象名.方法名()
2.2 利用new Object创建对象
// 利用new Object创建对象
var obj = new Object(); //创建了一个空的对象
obj.name = '王一博';
obj.age = 24;
obj.sex = '男';
obj.dancing = function () {
console.log('dancing!');
}
- 利用等号 = 赋值的方法添加对象的属性和方法
- 每个属性和方法之间用分号 ; 结束
2.3 利用构造函数创建对象
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {}
}
new 构造函数名();
- 构造函数名第一个字母要大写
- 构造函数不需要return 就可以返回结果
- 调用构造函数必须使用new
- 只要调用函数就创建了一个对象
- 属性和方法前面必须添加this
3. new 关键字
new 关键字执行过程
- new构造函数可以在内存中创建一个空的对象
- this就会指向刚才创建的空对象
- 执行构造函数里面的代码,给这个空对象添加属性和方法
- 返回这个新对象(所以构造函数里面不需要return)
4.遍历对象属性
for…in用于对数组或者对象的属性进行循环操作
//for (变量 in 对象) {
//}
for (var k in obj) {
console.log(k); //k 变量,输出属性名
console.log(obj[k]); //obj[k]输出属性值
}
for…in 里面的变量一般使用k,或者key