2014年11月3日 星期一

20141103 今日學習

5K業務費不能買書,單筆金額不能超過2999,所以只好來買電腦螢幕了,剛好我房間缺大螢幕,陳映鋼推薦買ASUS的20吋螢幕,就決定買這台

看了一個很正的演講:終結教育舊思維:苑舉正 | TEDxTaipei


這段Ted影片一直還沒時間看,明天再看吧

看到程式人雜誌的一串討論串,裡頭有一段話我很喜歡
  • 符明琮:寫軟體如果不想辦法簡化語法或是簡化思考,程式以後只要變大變複雜,修改就會變得困難重重。學校都沒有人在教這個,都只會讓學生腦筋急轉彎..~..~".
看到一個討論Open source、Open project的動態,其中一段我很喜歡,特此摘錄
  • 創新不是追求技術的極緻,而是尋求解決問題的新道路
剛好看到陳鍾誠老師推薦的一本Node.js的書,老師的評價:內容比較深,但若已經熟練 JavaScript ,但對想深入瞭解 node.js 與背後運作機制的人,我覺得這是一本好書
看到一個超有梗的書名,與神豬選市長時事完美結合,已向圖書館填推薦書單
本週五晚上看完大支的演唱會後要去看阿堂推薦的表演,還沒估狗表演場地在哪,在此備份一下
雖然我滿懶得打扮,但我也喜歡看人家穿帥帥,葉丙成老師的介紹,到底怎麼辦法又會做研究又讀台大又有美感啊,好厲害喔!!!

繼續昨日的進度與今日目標:

Understand JavaScript’s “this” With Clarity, and Master It這篇文章的,When this is most misunderstood and becomes tricky這節的第一小節:Fix this when used in a method passed as a callback開始,快讀完了,加油!!!

接著再繼續讀The Document Object Model :: Eloquent JavaScript,最後讀JavaScript Objects in Detail 的Serialize and Deserialize Objects這節

開始!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Understand JavaScript’s “this” With Clarity, and Master It
  • When this is most misunderstood and becomes tricky
    • Fix this when used in a method passed as a callback
頗有趣的,先閱讀這節的paradigm,你就能有所體會,在paradigm中可以讀到,一開始定義一個object1,object裡頭放了一個用method,這method用了this keyword,讓我們可以用不同的other object來調用object1裡的method來顯示other object的properties,但是這節提到一個有趣的議題,如果我們把object1當作parameter,來讓另一個object的method使用,如object3.method3(object1),這樣子,當初在object1裡用的this keyword,就會指向object3,但是若object3沒有與object1相同的property names時,不就不能用了嗎,這樣我們要如何繼續? the author特別寫了另一篇文章討論此議題,在此先備份,讀完這篇後就來讀它

Fix this inside closure這節

這篇讀完後,我發現我又遇到問題了,以前學JavaScript的,在function傳的parameter都會透return 回傳出來,但是在這節的paradigm與Fix this when used in a method passed as a callback這節的paradigm都看到了
clickhandler:function(event){
//沒有return,event在body裡也沒有被拿來用
}
於是我去估狗了一下,發現Wiki裡對event有著如下的定義
  • An event occurs when something happens in a browser window.
所以這不只是JavaScript的部分,這還牽扯到HTML去,恐怕還需要去讀一下這篇了解這在幹嘛
好了,先回來原本這節,這節提到this在closure要如何處理,closure代表一個nested function,外面一層fuction,裡面又一層function,裡面的function可以調用外面function的variable。在paradigm中,object裡寫了data:[...]與一個clickHandler method,這method寫this.data.forEach(),forEach()裡又放一個anonymous function當作parameter,而這個anonymous function裡又用console.log(this.....)。
這有趣了,我們知道原本對this的裡解,object裡的method裡用this來指向object,this keyword就像英文句子裡的代名詞,以前學到的this可以指向{}外的object
現在再回頭來看這個paradigm
this.data.forEach(function(person){console.log(this.....)})
奇怪console.log的this向外指,只會指到this,另一個代名詞,如此一來抓不到東西,JavaScript就會把this指到window去了
  • this inside the anonymous function cannot access the outer function’s this, so it is bound to the global window object, when strict mode is not being used.
解決辦法是,在clickHandler method裡,再定義一個var theUserObj = this;this指向 theUserObj這個object,如此一來就可以了,詳情請見這節的第二個paradigm。

Fix this when method is assigned to a variable這節

一開頭給了我們下面這串文字,看這節的paradigm一目瞭然就知道this指錯人了
  • The this value escapes our imagination and is bound to another object, if we assign a method that uses this to a variable.
它的解決辦法是用bind()去處理,恩....還沒拜讀JavaScript’s Apply, Call, and Bind Methods are Essential for JavaScript Professionals 這篇文章,所以....先擱著。

Fix this when borrowing methods這節

這節開宗明義就要我先讀過JavaScript’s Apply, Call, and Bind Methods are Essential for JavaScript Professionals 這篇文章..............恩,先擱著。

OVER!!!!!!!!!!!!!!!!!

明日目標
緩一下,明天先不要讀文章,先去讀code寫code,以下是紀錄接下來要讀的文章有哪些

沒有留言:

張貼留言