JS動(dòng)態(tài)調(diào)用方法名示例介紹
JavaScript eval() 函數(shù)
定義和用法
eval() 函數(shù)可計(jì)算某個(gè)字符串,并執(zhí)行其中的的 JavaScript 代碼。
語(yǔ)法
eval(string)
參數(shù) 描述
string 必需。要計(jì)算的字符串,其中含有要計(jì)算的 JavaScript 表達(dá)式或要執(zhí)行的語(yǔ)句。
返回值
通過(guò)計(jì)算 string 得到的值(如果有的話)。
說(shuō)明
該方法只接受原始字符串作為參數(shù),如果 string 參數(shù)不是原始字符串,那么該方法將不作任何改變地返回。因此請(qǐng)不要為 eval() 函數(shù)傳遞 String 對(duì)象來(lái)作為參數(shù)。
如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個(gè)屬性,并通過(guò)該屬性調(diào)用它,則 ECMAScript 實(shí)現(xiàn)允許拋出一個(gè) EvalError 異常。
拋出
如果參數(shù)中沒(méi)有合法的表達(dá)式和語(yǔ)句,則拋出 SyntaxError 異常。
如果非法調(diào)用 eval(),則拋出 EvalError 異常。
如果傳遞給 eval() 的 Javascript 代碼生成了一個(gè)異常,eval() 將把該異常傳遞給調(diào)用者。
提示和注釋
提示:雖然 eval() 的功能非常強(qiáng)大,但在實(shí)際使用中用到它的情況并不多。
實(shí)例
例子 1
在本例中,我們將在幾個(gè)字符串上運(yùn)用 eval(),并看看返回的結(jié)果:
<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>
輸出:
200
4
27
例子 2
看一下在其他情況中,eval() 返回的結(jié)果:
eval("2+3") // 返回 5
var myeval = eval; // 可能會(huì)拋出 EvalError 異常
myeval("2+3"); // 可能會(huì)拋出 EvalError 異常
可以使用下面這段代碼來(lái)檢測(cè) eval() 的參數(shù)是否合法:
try {
alert("Result:" + eval(prompt("Enter an expression:","")));
}
catch(exception) {
alert(exception);
}
第一種方法就是使用js里面的eval
下面是自己寫(xiě)的例子
call("showmsg");
function call(functionName){
eval("this."+functionName+"()");
}
function showmsg(){
alert("success");
}
eval能將你拼接的字符串自動(dòng)識(shí)別為方法,并調(diào)用。
但弊端也是很大的,想象一下,某個(gè)人改你調(diào)用地方的方法名,便能調(diào)用你的任意方法。
第二種方法主要用作自己定義的方法
主要是第二種方法需要特定的方式去寫(xiě)
function call(functionName) {
showmsgs["showmsg"]();
}
var showmsgs = { showmsg: function () {
alert("success");
}
}
call("showmsg");
相關(guān)文章
file-loader打包圖片文件時(shí)路徑錯(cuò)誤輸出為[object-module]的解決方法
這篇文章主要介紹了file-loader打包圖片文件時(shí)路徑錯(cuò)誤輸出為[object-module]的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01關(guān)于AOP在JS中的實(shí)現(xiàn)與應(yīng)用詳解
這篇文章主要給大家介紹了關(guān)于AOP在JS中的實(shí)現(xiàn)與應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05window.location.hash 使用說(shuō)明
location是javascript里面管理地址欄的內(nèi)置對(duì)象.2010-11-11JavaScript實(shí)現(xiàn)url參數(shù)轉(zhuǎn)成json形式
這篇文章主要介紹了JavaScript實(shí)現(xiàn)url參數(shù)轉(zhuǎn)成json形式的相關(guān)代碼,有喜歡的小伙伴可以參考下2016-09-09JavaScript Canvas實(shí)現(xiàn)井字棋游戲
這篇文章主要為大家詳細(xì)介紹了JavaScript Canvas實(shí)現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08JS面向?qū)ο髮?shí)現(xiàn)飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了JS面向?qū)ο髮?shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08網(wǎng)頁(yè)右下角彈出窗體實(shí)現(xiàn)代碼
右下角彈出窗體的效果在瀏覽網(wǎng)頁(yè)的時(shí)候會(huì)遇到,那么它是怎么實(shí)現(xiàn)的呢?本文有個(gè)不錯(cuò)的示例,大家可以參考下2014-06-06深入探討JavaScript異步編程中Promise的關(guān)鍵要點(diǎn)
這篇文章將全面深入地探討Promise,包括其前身、歷史、能力、優(yōu)點(diǎn)、缺點(diǎn)以及提供每個(gè)方法的案例,感興趣的小伙伴可以跟隨小編一學(xué)習(xí)一下2023-06-06