js实现继承的几种方式(利用原型链实现继承)
深拷贝与浅拷贝【object.assign({},obj)第一层是深拷贝,嵌套内是浅拷贝;JSON.parse(JSON.stringify(obj)不能对Function进行拷贝】
this的理解(执行时候,最后调用它的对象;setTimeout(()=>{},0)箭头函数中的this值与它的上一级作用域中this的值一样,setTimeout(function(){},0)则为window)【todo:this】
正则表达式
promise(await是在等待一个Promise的异步返回)
垃圾处理机制
event loop为什么处理异步需要两个队列呢?
理解 es6 class 中 constructor 方法 和 super 的作用
arguments是什么?有什么妙用?类数组结构是什么?(对象类型,有length,key类似数组索引)
严格模式与非严格模式的区别?
URL解析
DNS解析(域名解析)
浏览器主机根据ip地址与服务器建立TCP连接
发送HTTP请求
服务器处理请求
断开TCP连接
浏览器解析文件
浏览器布局渲染
闭包
<script>
function outer(){
var x=10;
return function(){ //函数嵌套函数 x++; alert(x); }
}
var y = outer(); //外部函数赋给变量y;
y(); //y函数调用一次,结果为11,相当于outer()();
y(); //y函数调用第二次,结果为12,实现了累加</script>
当new Foo()时发生了什么
1.创建了一个新对象
2.将this指向这个新对象
3.执行构造函数里面的代码
4.返回新对象(this)
let values = [0, 1, 5, 10, 15];
values.sort((a,b)=> b-a) // [15, 10, 5, 1, 0]
values.sort((a,b)=> a-b) // [0, 1, 5, 10, 15];
JS作用域
var sex = '男';
function person() {
var name = '张三';
function student() { var age = 18; console.log(name); // 张三 console.log(sex); // 男 }
student();
console.log(age); // Uncaught ReferenceError: age is not defined
}
person();
原型链
1.箭头函数不能用new来创建构造函数的实例,普通函数可以(因为箭头函数创建的时候程序不会为它创建construct方法,也就是没有构造能力,用完就丢掉了,不像普通函数重复利用,因此也不需要构造函数原型,也就是不会自动生成prototype属性)
2.程序不会给箭头函数创建arguments对象
3.普通函数中的this是动态的,而箭头函数中的this指向的是紧紧包裹箭头函数的那个对象(定义时决定的)
4.箭头函数不能通过bind、call、apply来改变this的值,但依然可以调用这几个方法(只是this的值不受这几个方法控制)
1.什么是类数组?常见的有哪些?(arguments,document.query)
var arrLike = {0:"zhangsna",1:"lisi",2:"wangwu",3:"zhaoliu",4:"xiaoming",5:"xiaohong",length:6} console.log(arrLike)
console.log("甚至可以像数组一样使用for循环")
for (let i = 0;i<arrLike.length;i++){ console.log(i+":",arrLike[i]) }
2.如何转化成数组?
//(1) proptype + slice+call
Array.prototype.slice.call(arrLike) // ['zhangsna', 'lisi', 'wangwu', 'zhaoliu', 'xiaoming', 'xiaohong']
//(2)Array.from(arrLike)
//(3)arguments 使用 [...arguments]