JavaScript 應避免使用with述句。
with 的設計機制動機:程式時常需要在單一個物件上依序呼叫幾個方法,而避免重複那個物件參考。
JavaScript 應避免使用with述句原因:在一個with區塊中,對外層變數的每一個參考,都隱含地假設「在with物件或是它的任何一個原形物件(prototype objects) 中都沒有同名的特性」。但是程式中建立或修改那個with物件與其原型的其他部分,可能不會這樣假設,它們當然不可能會去讀取你的區域範疇以了解你正在使用什麼區域變數。
重點整理如下
- 避免使用with述句。
- 需要重複存取一個物件時,請使用簡短的變數名稱來參考它。
- 明確地把區域變數(local variables)繫結到物件的特性(object properties)而非透過with敘述句隱含地繫結它們。
資料參考來源:Effective JavaScript 中文版 | 駕馭 JavaScript 的 68 個具體作法 (Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript)