深入淺析javascript函數(shù)中with
/*js函數(shù)中with函數(shù)的用法分析
定義 方便用來引用某個對象中已有的屬性
但是不能用來給對象添加屬性 要給對象創(chuàng)建
新的屬性 必須明確的引用該對象*/
代碼格式
with(object) statements
object:新的默認對象
statements:一個或多個語句 oject是該語句的默認對象
with 語句通常用來縮短特定情形下必須寫的代碼量。
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10) y = Math.tan(14 * Math.E)
with (Math){ x = cos(3 * PI) + sin (LN10) y = tan(14 * E)}
function valiadate_reauired
簡單的來說就是with相當于一種速寫方式 在指定的代碼區(qū)域,通過節(jié)點名稱就能調(diào)用對象
普通寫法:
var car={
size: suv,
color:yellow,
money:1500
};
其他類調(diào)用
function={
car car =new car();
car.size=suv;
car.color=yellow;
car.money=1500;
}
使用with的寫法:省去了car.
with(car){
size=suv;
color=yellow;
money=1500;
}
使用with語句關(guān)聯(lián)了car對象,解析時 with代碼塊的內(nèi)部把每個變量都認為是局部變量;
如果局部變量里與car對象屬性(例如size)屬性同名,這個局部變量就會指向car里面的屬性;
缺點1
with會自動在全局作用域創(chuàng)建一個全局變量,在嚴格模式下,會拋出ReferenceError 異常。
withwith 會在運行時修改或創(chuàng)建新的作用域,以此來欺騙其他在書寫時定義的詞法作用域。
缺點2
with在相同條件下比不使用它慢了很多,具體的原因是因為js在運行之前要進行預編譯,其中有些優(yōu)化依賴于能夠根據(jù)代碼的詞法進行靜態(tài)分析,并預先確定所有變量和函數(shù)的定義位置,才能在執(zhí)行過程中快速找到標識符。
但如果引擎在代碼中發(fā)現(xiàn)了 with,它只能簡單地假設(shè)關(guān)于標識符位置的判斷都是無效的,因為無法知道傳遞給 with 用來創(chuàng)建新詞法作用域的對象的內(nèi)容到底是什么。所以js就不會優(yōu)化
總結(jié)
以上所述是小編給大家介紹的javascript函數(shù)中with,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
相關(guān)文章
javascript json字符串到j(luò)son對象轉(zhuǎn)義問題
今天小編就為大家分享一篇關(guān)于javascript json字符串到j(luò)son對象轉(zhuǎn)義問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01
JS實現(xiàn)帶有抽屜效果的產(chǎn)品類網(wǎng)站多級導航菜單代碼
這篇文章主要介紹了JS實現(xiàn)帶有抽屜效果的產(chǎn)品類網(wǎng)站多級導航菜單代碼,涉及JavaScript動態(tài)操作頁面元素屬性的技巧,整體界面效果美觀大方,具有極強的立體感,需要的朋友可以參考下2015-09-09
一文帶你快速理解JavaScript中call()函數(shù)的使用
這篇文章主要為大家詳細介紹了JavaScript中call()函數(shù)的使用的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以參考一下2023-03-03
js中addEventListener()與removeEventListener()用法案例分析
這篇文章主要介紹了js中addEventListener()與removeEventListener()用法,結(jié)合實例形式分析了js中addEventListener()與removeEventListener()基本功能、用法與操作注意事項,需要的朋友可以參考下2020-03-03
layui當點擊文本框時彈出選擇框,顯示選擇內(nèi)容的例子
今天小編就為大家分享一篇layui當點擊文本框時彈出選擇框,顯示選擇內(nèi)容的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
js提示框替代系統(tǒng)alert,自動關(guān)閉alert對話框的實現(xiàn)方法
下面小編就為大家?guī)硪黄猨s提示框替代系統(tǒng)alert,自動關(guān)閉alert對話框的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11

