目前分類:未分類文章 (9)

瀏覽方式: 標題列表 簡短摘要

時常看到拖拉式的方法上傳檔案,會有一個 Drop zone 讓檔案拖拉進去,在製作的過程中,我希望拉近去 Drop zone 的時候邊框會變色,所以綁了一個 dragenter 和 dragleave event 在 Drop zone container 中,但 Drop zone container 中有 child element 的話,如果拖拉的時候有碰觸到 child element 的話也會觸發我所綁定的 event,想了一些方式,但都是從 Javascript 的方面著手,像是比對目前觸發的 element 是不是 Drop zone container 之類的方式,寫起來個人還是覺得髒....,沒想到這個問題可以用 CSS3 來解決,CSS3 真的很威阿~~~。

只要將 child element 加上一個屬性:

文章標籤

zack9433 發表在 痞客邦 留言(1) 人氣()

今年打算和在一起四年左右的女友結婚,很高興她能答應我,於是我們開始籌備我們的婚禮。老婆在網路上找了很多自助婚紗相關的資料,找到了米嘉叔康工作室,深深被他們的風格給吸引

雖然有點貴,再經過一番討論後就決定讓找他們拍囉!拍攝婚紗的心得之後再寫一篇記錄,這間自助婚紗工作室本身不提供婚紗,所以我們要自己找外拍的婚紗。此篇最主要是分享兩間單租外拍婚紗的過程。

文章標籤

zack9433 發表在 痞客邦 留言(1) 人氣()

最近想要讓自己更有生產力一些,想到了 WebStorm,這款 IDE 真的頗強大的

大家可以到官網看看。

文章標籤

zack9433 發表在 痞客邦 留言(0) 人氣()

我想大部分的初學者都會經歷過一個狀況,也就是在一個 Parent 和 child scope 間突然失去了 binding

可以看看以下的範例

文章標籤

zack9433 發表在 痞客邦 留言(0) 人氣()

頭一次上台,知道有很多地方可以改進,我分享的題目是 Say yo to AngularJS

主要是要介紹大家前端的 Open source。AngularJS 是 Front-end 的 Framework

文章標籤

zack9433 發表在 痞客邦 留言(0) 人氣()

2013/03/25 update:

在更新完 wine 之後就不能用 Line 了,覺得在 ubuntu 上面跑 line 超不穩,最後還是放棄了,如果有人還是很想要的話去試看看安裝較舊版本的 wine 看看吧!

文章標籤

zack9433 發表在 痞客邦 留言(5) 人氣()

出處: Asha Fitness

 

zack9433 發表在 痞客邦 留言(0) 人氣()

 

Backbone.js And JavaScript Garbage Collection

此文要說明的是在 Backbone.js 中並沒有特別去清理 Objects,它完全是交給 Developer 和 Browser 的 GC 來處理。首先說明 JavaScript 是 Garbage collected language,若 Object 沒有被 Reference 則能被回收,若有被 Reference 則不回收,所以要讓 JavaScript runtime 回收記憶體就要做 De-reference object 的動作。

De-reference 可以從 JavaScript 的 Variable 生命週期來看,分為 Global scope 和 Function scope(Local scope):

1. Global scope: 當某個 Variable 宣告在 Global scope 中,它會被 GC 回收的時機為,重新整理頁面、Load page completely from server、關閉瀏覽器或者是關閉分頁,當有觸發到以上所說的狀況時才會自動的被回收,否則 Variable 所指向的 Object 或 Value 會一直存在在記憶體中。

2. Function scope: 當 Variable 宣告在 Function 理,就是 Local variable,而釋放 Local variable 是在執行完 Function 離開後並且此 Function 沒有被 Reference 時,就能被 GC 回收。在這邊要注意的就是,通常沒有被回收就是還有被 Reference,這種狀況通常是用了 JavaScript 的某種技巧,能讓 Local 的東西活久一點,能達到此狀況大致上就如以下所示:

  • Returned values from functions
  • Closures
  • Object attributes and methods
  • Callback functions and DOM events

Return value:

我想此文所說的 Return value 的狀況大概就是像下面這樣的 Code:

function foo() {

// Function scope heare

var inner = 'Hello World!';

/* Do some thing stuff */

return inner;

}

// outer in global scope

var outer = foo();

依照上面的 Rule 來看,執行 foo 時 inner 會在離開 Function scope (就是離開 '}' ) 後,就被釋放囉! 但是它會將回傳值 Assign 到 outer,此時 outer 處於 Global scope,除非 outer 離開了 Global scope,否則它會存在於記憶體中。

Closures

Closure 我想應該是很抽象的,Closure 為某個 Function 內有一個 Nested function 組成 Parent scope 和 Nested scope,Nested scope 可以去存取 Parent scope 的 Variables ,並且當 Function 執行後,有 Reference 指向 Nested function,大致上是這樣解釋,看不懂得可以參考此連結

Object attributes and methods:

Object attributes and methods 一樣是依照上述的 Rule ,此種狀況還蠻常見的

var obj;

obj.foo = thatObj;

此時只要 obj 的生命週期沒結束 thatObj 也不會結束,只要主動作 De-reference 的動作(在 Global scope 的狀況)例如:delete obj.foo; 或者是離開 Function scope 就會被回收了

Callback functions and DOM events:

在 JavaScript 中,非同步的狀況很常用到 Callbak function,例如:AJAX, setTimeout 或 setInterval,當 Callback 當作參數或者指派給某個 Object 後,此 Object 會 Reference  到 Callback function,若此 Object 為 Function scope object ,當離開 Function scope ,Callback function 就可以被回收,若為 Global scope object,一樣會依照上述的 Rule

在這裡比較特殊的是當 DOM object 的 Event 去 Reference 某個 Event handler( Callback ),我們必須去釋放 Dom reference 和 Event handler reference

作者最後有說明在 Backbone 中要如何去移除 Reference ,這就要看他另一篇文章

以上大致上是我看完此篇文章的心得,不敢保證一定正確,有錯誤的話歡迎指證

zack9433 發表在 痞客邦 留言(0) 人氣()

 

前言

zack9433 發表在 痞客邦 留言(0) 人氣()