学东西要知其然并且知其所以然
另外,实践出来的感悟和别人分享的感悟是不一样的
- [ ] 垂直居中布局
- [x] 浏览器缓存
- [ ] tcp连接
- [ ] 状态码 301 302 307
- [x] bind方法实现
- [x] new关键字实现
- [ ] 最长公共子序列
- [ ] react中 pureComponent hooks
- [x] 箭头函数
- [ ] window.onload() && $(document).ready()
- 浏览器缓存有一个注意点
Etag优先级比LastModified高, lastmodified最后修改时间只能精确到秒,如果1s内多次修改,捕捉不到
另外,有些资源内容没有变,但lastmodified变了,etag可以防止不使用缓存
- 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]));
}
}
- 箭头函数的一些特点总结
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。