文章目录
1.onload和DOMContentLoaded区别理解
当onload事件触发时,页面页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成。而DOMContentLoaded事件触发时,仅DOM加载完成。
2.for…of和for…in的区别
for…in实际上遍历的是对象的属性名称。for…in在遍历数组时有可能得到字符串索引,而不是数字索引,如下
var arr = ['a', 'b', 'c']
arr.name = 'tom'
for(var x in arr){
console.log(x) // '0','1','2','tom'
}
for…in循环把name也包含在内。而for…of解决了这一问题复制代码
3.原生Ajax写法
get请求
function Ajax(url) {
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : ActiveXObjext('microsoft.XMLHttp')
xhr.open('get', url, true)
xhr.send()
xhr.onreadystatechange = () => {
if(xhr.reayState == 4){
if(xhr.readyState == 200){
var data = xhr.responseText
return data
}
}
}
}
4.post请求
function Ajax(url, data){
var xhr = window.XMLHttpRequset ? new XMLHttpRequest() : ActiveXObject('microsoft.XMLHttp')
xhr.open('post', url true)
xhr.setRequestHeader('content-type','xxx')
xhr.send(data)
xhr.onreadystatechange = () => {
if(readyState == 4){
if(readyState == 200){
var list = xhr.reponseText
return list
}
}
}
}
5.立即执行函数
定义声明一个函数,并马上调用这个匿名函数就叫做立即执行函数
-
写法:(function(){})() (function(){}())
-
作用:
1.不必为函数命名,避免污染全局变量
2.立即执行函数内部形成一个单独的作用域,可以封装外部无法读取的私有 变量
3.封装变量
6.常用BOM属性、对象、方法
BOM即javascript可以进行操作浏览器各个功能部件的接口
1)window对象
- window方法
window.confirm() 确认
window.open() 打开新窗口
window.close 关闭窗口复制代码 - window属性
closed opener复制代码
2)navigator对象
- navigator对象属性
navigator.appName 浏览器名称
navigator.online 系统是否处于脱机状态
navigator.userAgent 返回客户端完整信息复制代码
3)screen对象
- screen对象属性
deviceXDPI 返回显示屏幕的每英寸水平点数复制代码
history对象
4)history对象属性
length 在同一个标签页,跳转了多少次,length就是多少复制代码
7.javascript垃圾回收机制
两种方法:标记清除、引用计数
8.线程和进程的关系
进程(process)和线程(thread)是操作系统的基本概念
计算机的核心是CPU,它承担了所有的计算任务,单个CPU一次只能运行一个任务,进程它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。
- 一个进程可以包括多个线程。
- 一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
- 一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。
- 一个防止其他线程使用的简单方法"互斥锁"(Mutual exclusion,缩写 Mutex),防止多个线程同时读写某一块内存区域。
某些内存区域,只能供给固定数目的线程使用。 - 操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
9.new运算符的实现机制
1.首先创建了一个新的空对象
2.设置原型,将对象的原型设置为函数的prototype对象。
3.让函数的this指向这个对象,执行构造函数的代码(为这个新对象添加属性)
4.判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。
参考书籍:《Javascript高级程序设计》
本文深入探讨JavaScript中的关键概念:onload与DOMContentLoaded事件的区别,for..of和for..in循环的使用场景,原生Ajax实现get和post请求,立即执行函数的作用,以及浏览器BOM中的window对象、navigator对象和screen对象。同时,介绍了JavaScript的垃圾回收机制,线程和进程的关系,以及new运算符的工作原理。

被折叠的 条评论
为什么被折叠?



