https://developer.mozilla.org/zh-TW/docs/Core_JavaScript_1.5_%E6%95%99%E5%AD%B8/%E9%96%89%E5%8C%85%E7%9A%84%E9%81%8B%E7%94%A8
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures
總結:
閉包是一種特殊的物件,裡面包含了兩個東西:函數以及函數建立時的環境
2013年10月22日 星期二
2013年10月16日 星期三
JavaScript心得
1.
var o = new Object();
等於
var o = {};
2.
ride.make
等於
ride['make']
等於ride['m' + 'a' + 'k' + 'e'],依此類推
3.
在頂層(任何函數外)使用var宣告變數時,變數實際上是成為預先定義的window物件上的property。
unqualified的變數也會被認為是window物件的property
例如:var foobar = bar; 等於 window.foo = bar; 等於 foo = bar
4.
在JavaScript裡面下面的程式碼:
function foo()
{
alert('bar');
}
實際上是建立了一個function物件,然後讓foo這個函數名稱reference到該物件
5.
this這個變數名稱會reference到「函數環境物件」
任何物件都可以作為函數環境物件
哪個物件會作為環境物件是由「函數如何被呼叫」而決定(ex. 一般呼叫時,環境物件為呼叫該函數的物件;用call()或apply()呼叫函數時,環境物件是傳入的第一個參數)
6.
閉包
var o = new Object();
等於
var o = {};
2.
ride.make
等於
ride['make']
等於ride['m' + 'a' + 'k' + 'e'],依此類推
3.
在頂層(任何函數外)使用var宣告變數時,變數實際上是成為預先定義的window物件上的property。
unqualified的變數也會被認為是window物件的property
例如:var foobar = bar; 等於 window.foo = bar; 等於 foo = bar
4.
在JavaScript裡面下面的程式碼:
function foo()
{
alert('bar');
}
實際上是建立了一個function物件,然後讓foo這個函數名稱reference到該物件
5.
this這個變數名稱會reference到「函數環境物件」
任何物件都可以作為函數環境物件
哪個物件會作為環境物件是由「函數如何被呼叫」而決定(ex. 一般呼叫時,環境物件為呼叫該函數的物件;用call()或apply()呼叫函數時,環境物件是傳入的第一個參數)
6.
閉包
2013年10月15日 星期二
Bootstrap Grid System運作流程
注意:我不確定底層到底是怎麼實作的,至少我用這個想法去看bootstrap官網的example是可以解釋的通的
Bootstrap Grid System運作流程:
1. 檢查裝置的寬度,依照不同的寬度套用xs, sm, md或lg。
2. 遇到有col-**-*的class時,由本身開始往下檢查。
3. 如果檢查到最後沒有符合,grid就會stack起來。
例子1:
例如你使用超大螢幕,然後在一個row裡面有三個grid:
<div class="col-xs-2">.col-xs-2</div>
<div class="col-xs-8">.col-xs-8</div>
<div class="col-xs-2">.col-xs-2</div>
當你瀏覽該網頁時,會先看有沒有col-lg-*,在這個例子裏面並沒有col-lg-*,所以會往下檢查有沒有col-md-*,在這裡還是沒有。
依此類推,最後發現有col-xs-*,於是就以col-xs-*作為排版,也就是以2-8-2作為外觀。
例子2:
例如你使用中等大小的螢幕(或者你用超大螢幕,然後把瀏覽器縮小成md class的大小),以致於被瀏覽器歸類為md class,然後在一個row裡面有三個grid:
<div class="col-lg-2">.col-lg-2</div>
<div class="col-lg-8">.col-lg-8</div>
<div class="col-lg-2">.col-lg-2</div>
瀏覽器會先從col-md-*開始往下檢查,但在這個例子裡,一直到最後的col-xs-*都沒辦法找到,所以這三個grid就會stack起來
Bootstrap Grid System運作流程:
1. 檢查裝置的寬度,依照不同的寬度套用xs, sm, md或lg。
2. 遇到有col-**-*的class時,由本身開始往下檢查。
3. 如果檢查到最後沒有符合,grid就會stack起來。
例子1:
例如你使用超大螢幕,然後在一個row裡面有三個grid:
<div class="col-xs-2">.col-xs-2</div>
<div class="col-xs-8">.col-xs-8</div>
<div class="col-xs-2">.col-xs-2</div>
當你瀏覽該網頁時,會先看有沒有col-lg-*,在這個例子裏面並沒有col-lg-*,所以會往下檢查有沒有col-md-*,在這裡還是沒有。
依此類推,最後發現有col-xs-*,於是就以col-xs-*作為排版,也就是以2-8-2作為外觀。
例子2:
例如你使用中等大小的螢幕(或者你用超大螢幕,然後把瀏覽器縮小成md class的大小),以致於被瀏覽器歸類為md class,然後在一個row裡面有三個grid:
<div class="col-lg-2">.col-lg-2</div>
<div class="col-lg-8">.col-lg-8</div>
<div class="col-lg-2">.col-lg-2</div>
瀏覽器會先從col-md-*開始往下檢查,但在這個例子裡,一直到最後的col-xs-*都沒辦法找到,所以這三個grid就會stack起來
2013年10月14日 星期一
從PHP到MySQL,再從MySQL回到PHP的這個過程,字串編碼發生了什麼事?
1. 重要觀念:
(1) 字串本質上就只是一堆二進位資料。字串要配合字元編碼使用,才有意義。
(2) 如何從A編碼轉換至B編碼:到A的表格查表,再到B的表格查表
2.
PHP讀取MySQL的整個過程,編碼發生了什麼事:
(1) PHP送出字串到MySQL server。MySQL server會認為接收到的字串,其編碼為character_set_client system variable
(2) MySQL server會將該字串的編碼由character_set_client轉換至character_set_connection編碼
(3) 執行讀取
(4) 將讀取的結果由column的編碼轉換為character_set_results編碼,然後送回給PHP
3.
PHP插入資料到MySQL的整個過程,編碼發生了什麼事:
(1) PHP送出字串到MySQL server。MySQL server會認為接收到的字串,其編碼為character_set_client system variable
(2) MySQL server會將該字串的編碼由character_set_client轉換至character_set_connection編碼
(3) 將字串的編碼由character_set_connection轉換至column的編碼
(4) 寫入字串到欄位裡
總結:
讀:character_set_client -> character_set_connection -> 讀取結果 -> column -> character_set_results
寫:character_set_client -> character_set_connection -> column -> 寫入字串
(1) 字串本質上就只是一堆二進位資料。字串要配合字元編碼使用,才有意義。
(2) 如何從A編碼轉換至B編碼:到A的表格查表,再到B的表格查表
2.
PHP讀取MySQL的整個過程,編碼發生了什麼事:
(1) PHP送出字串到MySQL server。MySQL server會認為接收到的字串,其編碼為character_set_client system variable
(2) MySQL server會將該字串的編碼由character_set_client轉換至character_set_connection編碼
(3) 執行讀取
(4) 將讀取的結果由column的編碼轉換為character_set_results編碼,然後送回給PHP
3.
PHP插入資料到MySQL的整個過程,編碼發生了什麼事:
(1) PHP送出字串到MySQL server。MySQL server會認為接收到的字串,其編碼為character_set_client system variable
(2) MySQL server會將該字串的編碼由character_set_client轉換至character_set_connection編碼
(3) 將字串的編碼由character_set_connection轉換至column的編碼
(4) 寫入字串到欄位裡
總結:
讀:character_set_client -> character_set_connection -> 讀取結果 -> column -> character_set_results
寫:character_set_client -> character_set_connection -> column -> 寫入字串
基本觀念:MySQL字元集和校對
http://dev.mysql.com/doc/refman/5.0/en/charset.html
結論:
1. Character Sets(字元集) and Collations(校對):
Character Sets: a set of symbols and encodings
example:
A => 0
B => 1
C => 2
Collations: Given a character set, a set of rules for comparing characters in a character set. That is, given a character set, how are you going to compare two strings?
example:
Suppose that we want to compare two string values, "A" and "B".
The simplest way to do this is to look at the encodings: 0 for "A" and 1 for "B". Because 0 is less than 1, we say "A" is less than "B". What we've just done is apply a collation to our character set.
(註:Collations是根據encodings做判斷,而不是以symbols做為判斷)
(註:Any given character set always has at least one collation.)
2.
每一個connection有自己的Character Sets和Collations,詳情請看:
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
此外,There are default settings for character sets and collations at four levels: server, database, table, and column. (由上層到下層)
如果創建下層的時候完全沒有指定Character Set and Collation,該層就會沿用上層的Character Set and Collation。例如你在CREATE TABLE的時候完全沒有設定Character Set and Collation的話,該TABLE就會沿用database的Character Set and Collation。
但是如果你在CREATE TABLE的時候只設定character set,那麼MySQL就會幫你把該TABLE的collation設定為該character set的default collation。如果只有指定TABLE的collation,那麼該TABLE的character set就會被設定為該collation對應的character set。
結論:
1. Character Sets(字元集) and Collations(校對):
Character Sets: a set of symbols and encodings
example:
A => 0
B => 1
C => 2
Collations: Given a character set, a set of rules for comparing characters in a character set. That is, given a character set, how are you going to compare two strings?
example:
Suppose that we want to compare two string values, "A" and "B".
The simplest way to do this is to look at the encodings: 0 for "A" and 1 for "B". Because 0 is less than 1, we say "A" is less than "B". What we've just done is apply a collation to our character set.
(註:Collations是根據encodings做判斷,而不是以symbols做為判斷)
(註:Any given character set always has at least one collation.)
2.
每一個connection有自己的Character Sets和Collations,詳情請看:
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
此外,There are default settings for character sets and collations at four levels: server, database, table, and column. (由上層到下層)
如果創建下層的時候完全沒有指定Character Set and Collation,該層就會沿用上層的Character Set and Collation。例如你在CREATE TABLE的時候完全沒有設定Character Set and Collation的話,該TABLE就會沿用database的Character Set and Collation。
但是如果你在CREATE TABLE的時候只設定character set,那麼MySQL就會幫你把該TABLE的collation設定為該character set的default collation。如果只有指定TABLE的collation,那麼該TABLE的character set就會被設定為該collation對應的character set。
訂閱:
意見 (Atom)