JavaScript
this指向
https://www.cnblogs.com/pssp/...
call、Apply、Bind
https://www.cnblogs.com/pssp/...
原型、原型链
{
function Person(){}
Person.prototype.name = '小明'
let person = new Person()
console.log(person.__proto__ == Person.prototype) // true
console.log(Person.prototype.constructor == Person) // true
// 顺便学习一个ES5的方法,可以获得对象的原型
console.log(Object.getPrototypeOf(person) === Person.prototype) // true
console.log(person.name) // '小明'
console.log(person.__proto__.name) // '小明'
}
读取对象的某个属性时,JavaScript 引擎先寻找对象本身的属性,如果找不到,就到它的原型去找,如果还是找不到,就到原型的原型去找。如果直到最顶层的Object.prototype还是找不到,则返回undefined。如果对象自身和它的原型,都定义了一个同名属性,那么优先读取对象自身的属性,这叫做“覆盖”。
注意,一级级向上,在整个原型链上寻找某个属性,对性能是有影响的。所寻找的属性在越上层的原型对象,对性能的影响越大。如果寻找某个不存在的属性,将会遍历整个原型链。
作者:废柴码农
https://www.jianshu.com/p/30a...
class类
{
class Animal {
constructor(name,age){
this.name = name
this.age = age
}
sleep(){
return 'zZZ~'
}
}
Object.assign(Animal.prototype,{
todo(){
console.log('bark')
},
type: 'dd'
})
let cat = new Animal('cat','3')
class Bird extends Animal{
constructor(name,age){
super(name,age)
}
fly(){
console.log('flying...')
}
}
let maque = new Bird('麻雀',1)
maque
}
https://es6.ruanyifeng.com/#d...
异步
https://github.com/ElemeFE/no...
① Promise
② Async/await
宏任务和微任务
macro-task(宏任务):包括整体代码script,setTimeout,setInterval
micro-task(微任务):Promise,process.nextTick
console.log('1');
setTimeout(function() {
console.log('2');
process.nextTick(function() {
console.log('3');
})
new Promise(function(resolve) {
console.log('4');
resolve();
}).then(function() {
console.log('5')
})
})
process.nextTick(function() {
console.log('6');
})
new Promise(function(resolve) {
console.log('7');
resolve();
}).then(function() {
console.log('8')
})
setTimeout(function() {
console.log('9');
process.nextTick(function() {
console.log('10');
})
new Promise(function(resolve) {
console.log('11');
resolve();
}).then(function() {
console.log('12')
})
})
// 输出:1,7,6,8,2,4,3,5,9,11,10,12
Promise比setTimeout()先执行。因为Promise定义之后便会立即执行,其后的.then()是异步里面的微任务。而setTimeout()是异步的宏任务。
https://blog.csdn.net/zlzbt/a...
https://zhuanlan.zhihu.com/p/...
let 和 var 区别,const
var不能用于定义常量;var可以重复声明变量;var存在变量提升;var不支持块级作用域
正则
https://juejin.im/post/596594...
什么是跨域请求? 如何允许跨域?
向不同 host 的请求被称作跨域请求 ,可以通过设置 CORS headers 即 Access-Control-Allow- 系列来允许跨域
cookie 与 session 的区别? 服务端如何清除 cookie?
主要区别在于, session 存在服务端, cookie 存在客户端. session 比 cookie 更安全. 而且 cookie 不一定一直能用 (可能被浏览器关掉). 服务端可以通过设置 cookie 的值为空并设置一个及时的 expires 来清除存在客户端上的 cookie.
module.exports 与 exports 的区别解释
exports 是一个引用,直接赋值给它,只是让这个变量等于另外一个引用,所以 只有通过 module.exports 才能真正修改到 exports 本身
并行、并发
并发 (Concurrent) = 2 队列对应 1 咖啡机.
并行 (Parallel) = 2 队列对应 2 咖啡机. node.js 并行可以通过cluster实现
https://www.jianshu.com/p/078...
https://github.com/ElemeFE/no...
ES6/7/8
https://www.jianshu.com/p/390a65d7a353
其他
https://github.com/HerbertKarajan/Fe-Interview-questions
TypeScript
Css
https://github.com/haizlin/fe-interview/blob/master/category/css.md
Vue
插槽
其他
https://www.cnblogs.com/wangking/p/9598899.html
Web
https://github.com/HerbertKarajan/Fe-Interview-questions/tree/master/21-Front-end-Interview-questions
HTML + CSS + JS + ES6 + Webpack + Vue + React + Node + HTTPS + 数据结构与算法 + Git
https://github.com/biaochenxuying/blog/blob/master/interview/fe-interview.md
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。