function myNew(con, ...args) {
if (typeof con !== 'function') {
throw '第一个参数必须是函数'
}
let obj = {}
obj.__proto__ = con.prototype
let result = con.apply(obj, args)
return typeof res === 'object' ? res || obj : obj
}
function ajax(url, successFn) {
let xhr = new XMLHttpRequest();
xhr.open('GET', url, false)
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
successFn(xhr.response)
}
}
}
xhr.send(null)
}
function debounce(fn, delay) {
let timer = 0;
return function() {
if (timer) return
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = 0
}, delay);
}
}
function debounce(fn, delay) {
let timer = 0;
return function() {
if (timer) clearTimeout(timer) timer = setTimeout(() => {
fn.apply(this, arguments) timer = 0
}, delay);
}
}
px是固定的像素, 一旦设置了就无法因为适应页面大小而改变。 em和rem相对于px更具有灵活性, 他们是相对长度单位, 意思是长度不是定死了的, 更适用于响应式布局。 对于em和rem的区别一句话概括: em相对于父元素, rem相对于根元素。
箭头函数没有arguments, 箭头函数不能通过apply, bind, call来改变this。 箭头函数this指向定义时的父作用鱼
箭头函数不适合的场景: 1 构造函数2原型方法3对象的方法
forin显示key, forof显示value
let arr = [12, 13, 14]
for (let i in arr) {
console.log(i)
}
for (let i of arr) {
console.log(i)
}
访问量pv,自定义事件,性能,错误
一定要聊技术,说自己不太熟悉的技术栈。然后反转,说我已经意识到并开始学习,我估计会在一段时间内补齐短板。
代码规范(变量命名,代码语义),重复代码抽离复用,单个函数内容过长,需要拆分。算法复杂度能否优化
,是否有安全漏洞,扩展性怎么样,组件设计是否合理,