小鄭搞碼事:為什麼建議大家在JS代碼中,永遠不要使用with語句
知識
05-27
點擊右上方紅色按鈕關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!
首先,with語句的本意是提供一個訪問深層嵌套對象成員的快捷方式。
一,先搞清with語句的作用
一點都不難理解,下面來看一例子:
這個例子比較簡單,實例化一個構造函數。然後用with將它的屬性輸出來,同時在with語句中修改屬性名稱。
輸出一:小鄭 100 body
輸出二:小鄭
可以看出,修改屬性成功,with中也將對象的屬性都直接方法成功。然而,糟糕的是,當設置新成員屬性時,它的行為就會變得非常糟糕。
二,有點糟糕的問題
如下代碼:
在with語句里我添加了一個屬性weight,我本意是想給這個people對象添加一個屬性。然而卻沒有添加成功。
輸出一:小鄭 100 80
輸出二:undefined
最後總結建議:
出於這種問題,所以永遠不要使用with語句,而用var去代替它。其實JSLint不期望看到with語句。
※在移動端事件中,那個應用範圍最廣的觸摸事件,需要重點關注
※CSS偽類家族中,有個偽類focus為什麼還要出一個focus-within
TAG:小鄭搞碼事 |