weekly 201-03-28

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