学东西要知其然并且知其所以然
另外,实践出来的感悟和别人分享的感悟是不一样的
  • [ ] 垂直居中布局
  • [x] 浏览器缓存
  • [ ] tcp连接
  • [ ] 状态码 301 302 307
  • [x] bind方法实现
  • [x] new关键字实现
  • [ ] 最长公共子序列
  • [ ] react中 pureComponent hooks
  • [x] 箭头函数
  • [ ] window.onload() && $(document).ready()
  1. 浏览器缓存有一个注意点
Etag优先级比LastModified高, lastmodified最后修改时间只能精确到秒,如果1s内多次修改,捕捉不到
另外,有些资源内容没有变,但lastmodified变了,etag可以防止不使用缓存
  1. bind方法简单实现
Function.prototype.bind = function() {
    var self = this;
    var o = Array.prototype.shift.call(arguments);
    var arg1 = Array.prototype.slice.call(arguments);
    return function (...args) {
        return self.apply(o, arg1.concat([...args]));
    }
}
  1. 箭头函数的一些特点总结
let play = () => { consoel.log(this) }
1. 箭头函数没有原型,所以箭头函数没有this 
play.prototype == undefined
2. 箭头函数的this指向定义时候所在外层this指向,跟使用位置没有关系
this === window
3. 箭头函数this指向window时,没有arguments
let bar = () => { console.log(arguments) }// 报错 
箭头函数的this指向普通函数时,它的arguments可继承
function bar() {
    let foo = () => {
        console.log(arguments)
    }    
    foo() // 可以打印
}
                
var name = 'b';
var o = {
    name: 'a',
    key : () => {
        console.log(this.name) // b
    }
}

var o2 = {
    name: 'a',
    key : function() { console.log(this.name)} // a
}

4. 箭头函数不能使用new 关键字 因为没有constructor


ilvseyinfu
25 声望5 粉丝

很帅,不会写代码