一、
作用域
1、概念:代码名字(变量)在某个范围内起作用和效果
2、作用:提高程序的可靠性,减少命名冲突
3、作用域分类:全局作用域、局部作用域
3.1
全局作用域:整个script标签
例如:var num=10;
3.2
局部作用域(函数作用域):在函数内部起作用的、这个代码只在函数内部起效果和作用;
例如:function fn(){
var a=1000;//局部作用域
}
4、变量作用域分类:全局变量、局部变量
4.1
全局变量:在全局作用域下的变量;
4.2
局部变量:在函数内部的变量;
注意:在函数内
没有声明直接赋值的变量也属于全局变量
小栗子
局部变量比全局变量更节约内存
5、作用域链
就近原则
外部函数可以访问内部函数的变量
内部函数访问外部函数中的变量采用链式查找的方式决定取哪个值
二、
预解析
JavaScript解释器在运行js代码的时候分为两步:预解析和执行代码
(1)预解析js引擎会吧js里面的var、function 提升到当前作用域的最前面;
(2)按照代码书写的顺序从上往下执行;
三、对象
1、概念:在js中,对象是一组
无序的相关属性和方法的集合,例如:字符串、数组、数值
2、为何需要对象
保存一个值时,可以使用
变量,保存多个值可以使用
数组
保存多个不同类型的值的集合可以使用
对象
3、
创建对象的三种方式
3.1对象字面量:用{}创建对象
小栗子:
console.log('狗狗的名字:' + dog.name);
console.log('狗狗的品种:' + dog.type);
console.log('狗狗的年龄:' + dog.age);
console.log('狗狗的颜色:' + dog.colour);
console.log('狗狗的技能:' + dog.jn);
3.2利用new object创建对象
console.log('hello world');
3.3利用构造函数创建对象
特点:可以利用函数的方法,重复一些代码
构造函数就是把对象里面相同的代码和方式抽象出来封装到函数里面去
注意:
语法:
function 构造函数名() {
this.属性=值;
this.方法=function(){}
}
new 构造函数名();
栗子:
function Star(name, age, sex) {
this.sing = function () {
var a = new Star('刘德华', 18, '男');
var b = new Star('张学友', 19, '男');
new关键字
(1)new构造函数可以在内存中创建一个空的对象
(2)this就会指向刚才创建的空对象
(3)执行构造函数里面的代码,给这个新对象添加属性和方法
(4)返回这个新对象(所以构造函数里面不需要return)
4、变量、属性、函数、方法的异同
变量、函数:单独存在
属性、方法:存在在对象中
5、遍历对象