先看看JS的一個函數
JavaScript eval() 函數
定義和用法
eval() 函數可計算某個字串,並執行其中的JavaScript 程式碼。
文法
eval(string)
參數描述
string 必需。要計算的字串,其中包含要計算的JavaScript 表達式或要執行的語句。
傳回值
透過計算string 得到的值(如果有的話)。
說明
此方法只接受原始字串作為參數,如果string 參數不是原始字串,那麼該方法將不作任何改變地傳回。因此請不要為eval() 函數傳遞String 物件作為參數。
如果試圖覆寫eval 屬性或將eval() 方法賦予另一個屬性,並透過該屬性呼叫它,則ECMAScript 實作允許拋出一個EvalError 異常。
拋出
如果參數中沒有合法的表達式和語句,則拋出SyntaxError 例外。
如果非法呼叫eval(),則拋出EvalError 異常。
如果傳遞給eval() 的Javascript 程式碼產生了一個異常,eval() 將把該異常傳遞給呼叫者。
提示和註釋
提示:雖然eval() 的功能非常強大,但在實際使用中用到它的情況並不多。
實例
例子1
在本例中,我們將在幾個字串上運用eval(),並看看傳回的結果:
複製代碼代碼如下:
<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() 傳回的結果:
複製代碼代碼如下:
eval("2+3") // 回傳5
var myeval = eval; // 可能會拋出EvalError 異常
myeval("2+3"); // 可能會拋出EvalError 異常
可以使用下面這段程式碼來偵測eval() 的參數是否合法:
複製代碼代碼如下:
try {
alert("Result:" + eval(prompt("Enter an expression:","")));
}
catch(exception) {
alert(exception);
}
第一種方法就是使用js裡面的eval
下面是自己寫的例子
複製代碼代碼如下:
call("showmsg");
function call(functionName){
eval("this."+functionName+"()");
}
function showmsg(){
alert("success");
}
eval能將你拼接的字串自動辨識為方法,並呼叫。
但弊端也是很大的,想像一下,某個人改你呼叫地方的方法名,便能呼叫你的任意方法。
第二種方法主要用來作為自己定義的方法
主要是第二種方法需要特定的方式去寫
複製代碼代碼如下:
function call(functionName) {
showmsgs["showmsg"]();
}
var showmsgs = { showmsg: function () {
alert("success");
}
}
call("showmsg");