Lidemy / mentor-program-2nd-futianshen

mentor-program-2nd-futianshen created by GitHub Classroom
14 stars 2 forks source link

Week9hw #29

Closed futianshen closed 5 years ago

futianshen commented 5 years ago

Week9 作業

hw1 重構 week3 homework,week4 homework1 的 CSS hw2 http://ftshen.tw/mentor/week9hw2/

本週課程內容

這周把過去學到的很多東西串在一起,為此我還翻閱大學期間修過的計算機概論以及計算機網路的課本,有種複習周的感覺。

本週問題

這句話的意思是不是不用用物件導向的慣用語法,也可以實作出物件導向的概念 ?

以下是書中講解的程式碼 閉包寫法

var extent = function() {
  var value = 0;
  return {
    call: function () {
      value++;
      console.log(value)
    }
  }
}

var extent = extent()

extent.call(); //1
extent.call(); //2
extent.call(); //3

物件導向寫法

var extent =  {
  value: 0,
  call: function () {
      this.value++
      console.log(this.value)
    }
}

extent.call(); //1
extent.call(); //2
extent.call(); //3
aszx87410 commented 5 years ago

關於物件導向,的確,在大型的應用程式上才能夠展現優勢,因為小型的通常不會有太多抽象的東西需要共用,之後課程會碰到物件導向,包括之後要教的 ORM、React 以及 CodeIgniter 都會有 Class 的出現。

我每次都覺得那些書真的很喜歡把東西講得很簡潔精煉導致於不好理解,但意思應該就跟你說的一樣,兩個方法可以達成一樣的功能,前者之所以能運作是因為閉包,後者則是物件導向。

event loop 那邊有點小錯誤,並不是把 setTimeout 那個整個丟到 web api 去,而是執行 setTimeout 以後在 web api 那邊加上一個計時器,詳情可參考:https://youtu.be/8aGhZQkoFbQ?t=774