學東西要知其然而且知其因此然
另外,實踐出來的感悟和別人分享的感悟是不同的
- [ ] 垂直居中佈局
- [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