JS预解析、对象
记住一句话:JavaScript语言是单线程的
同步异步:
因为JavaScript的单线程,因此同个时间只能处理同个任务,所有任务都需要排队,前一个任务执行完,才能继续执行下一个任务,但是,如果前一个任务的执行时间很长,比如文件的读取操作或ajax操作,后一个任务就不得不等着,拿ajax来说,当用户向后台获取大量的数据时,不得不等到所有数据都获取完毕才能进行下一步操作,用户只能在那里干等着,严重影响用户体验
同步任务:
同步任务是指在主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务
同步操作:从上到下,依次执行
异步任务:
异步任务是指不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程
异步操作:一般是耗时较多的操作,进入等待队列,当同步操作结束后执行
常见异步操作:AJAX请求,定时器
定时器:setTimeout(code,等待多长时间执行)(执行一次)
setInterval(code,多长时间执行一次)(执行多次)
清除定时器
clearTimeout(定时器名)
clearInterval(定时器名)
所以创建定时器时 声明一个定时器名字,来接受定时器的返回值
例:
直接编写在 script 标签之中的JS代码,都是全局作用域;
或者是一个单独的 JS 文件中的。
全局作用域在页面打开时创建,页面关闭时销毁;
在全局作用域中有一个全局对象 window(代表的是一个浏览器的窗口,由浏览器创建),可以直接使用。
(2)局部作用域(函数作用域)
在函数内部就是局部作用域,这个代码的名字只在函数的内部起作用
调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁;
每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。
将这样的所有的作用域列出来,可以有一个结构: 函数内指向函数外的链式结构。就称作作用域链。
(3)隐式全局变量
声明变量使用`var`, 如果不使用`var`声明的变量就是全局变量( 禁用 )
function foo () {
var i1 = 1 // 局部
i2 = 2, // 全局
i3 = 3; // 全局
}
(4)作用域及作用域链
全局作用域---全局变量
局部作用域---局部变量---只在当前作用域下有效
块作用域?(js中没有)
只有函数才能产生局部作用域
作用域链的查找规则:
先从当前的作用域中查找,如果有,就返回
如果没有从上一级查找,有就返回,没有继续上一级查找,直到全局
如果全局没有,就报错
对象:
JavaScript中的对象其实就是生活中对象的一个抽象。
JavaScript的对象是无序属性的集合。
其属性可以包含基本值、对象或函数。对象就是一组没有顺序的值。我们可以把JavaScript中的对象想象成键值对,其中值可以是数据和函数。
Tips:
事物的特征在对象中用属性来表示。
事物的行为在对象中用方法来表示。
对象创建方式:
1.对象字面量
var obj = {};
2.new Object()创建对象
var obj = new Object();
3.工厂函数创建对象
function Person(name,age){
var per = new Objict();
per.name = name;
per,age = age;
return per;
}
var lisi = Person("李四","18")
//输出对象中的属性值
console.log(lisi.name)
console.log(lisi["name"])
4.自定义构造函数
function Person(name,age){
this.name = name;
this.age = age;
}
var per = new Person("张三",18)
属性和方法
1. 如果一个变量属于一个对象所有,那么该变量就可以称之为该对象的一个属性,属性一般是名词,用来描述事物的特征
2. 如果一个函数属于一个对象所有,那么该函数就可以称之为该对象的一个方法,方法是动词,描述事物的行为和功能
new 关键字
构造函数,是一种特殊的函数。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
1.、构造函数用于创建一类对象,首字母要大写。
2.、构造函数要和new一起使用才有意义。
new在执行时会做四件事情:
1、new会在内存中创建一个新的空对象
2、new会让this指向这个新的对象
3、new会返回这个新对象
对象的使用
遍历对象:
for(key in 对象名){
console.log(对象名 . 属性名);
console.log(对象名["属性名"]);
}
删除对象属性
delete obj . 属性名
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号