<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>综合练习6-1</title>
<script language="javascript" type="text/javascript">
// <!CDATA[
function Button1_onclick()
{
    try
    {
        var cmdWin = document.getElementById("TextArea1");  // 获取文本框的引用
        var str = "try{" + cmdWin.value + "}catch(e){alert('你的代码有错:'+e.description);}";// 构造函数体
        var cmd = new Function(str);    // 构造函数
        cmd();                          // 调用函数
    }
    catch(e)                            
    {
        alert("错误:"+e.description);  // 输出错误信息
    }
}
// ]]>
</script>
</head>
<body>
<!--用户界面,一文本框,一按钮-->
    <div align="center" style="border-right: #000000 1px solid; border-top: #000000 1px solid; border-left: #000000 1px solid;
        width: 618px; border-bottom: #000000 1px solid; height: 336px; background-color: #ffffff">
        <textarea id="TextArea1" style="width: 612px; height: 300px"></textarea>
        <input id="Button2" type="button" value="执行程序" onclick="return Button1_onclick()" style="width: 145px" /></div>
</body>
</html>高手解释一下以下代码什么意思?怎样实现的?
 var str = "try{" + cmdWin.value + "}catch(e){alert('你的代码有错:'+e.description);}";// 构造函数体
        var cmd = new Function(str);    // 构造函数
        cmd();                          // 调用函数

解决方案 »

  1.   

     var str = "try{" + cmdWin.value + "}catch(e){alert('你的代码有错:'+e.description);}";// 构造函数体
       var cmd = new Function(str); // 构造函数
       cmd(); // 调用函数cmd是由Function对象动态创建的一个js函数,它的函数体是变量中str的内容,最终解释为:
     var cmd=function(){
                       try{
                           //TextArea1元素里输入的内容,也做为函数体语句来执行                   }catch(e){
                            //......其它内容
             }
      

  2.   

    补充一下,最后漏了一个"}"号作为function函数的结束符
      

  3.   

    new Function(str)
    ()中它可以包括以","逗号隔开的多个字符串作为函数参数.但最后一个做为函数体的内容,其它的都做为这个动态创建的函数的形参,你这里只有一个参数str,所以他就是函数体,不带参数,
      

  4.   

    var str = "try{" + cmdWin.value + "}catch(e){alert('你的代码有错:'+e.description);}";// 构造函数体
    什么意思?
      

  5.   

    后面不是有注释么,在拼函体的内容,内容的值就是变量str这个达式计算的结果(类似如下):
    //var cmd=function()
    {
         try{
            //....     }catch (e){
           //.....     }
    }
      

  6.   

    比如在 TextArea1 控件里输入 alert('这是文本框中需要执行的代码');
    如果文本框里的代码存在异常则会提示异常错误信息.最终解析的函数为  function(){
       try{
    alert('这是文本框中需要执行的代码');
    }catch(e)
    {alert('你的代码有错:'+e.description);}
    }