JavaScript Function,创建函数对象(new Function()),字符串当代码来执行


demo.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>

        function Person(name, age){
            this.name = name;
            this.age = age;
        }

        var p = new Person("张三",19);


//        var func = new Function("console.log('我是动态创建的函数');console.log(1);");  
//        func();    // 会把Function() 中最后一个参数当做函数体执行。
        // 类似 eval()函数,可以将字符串当做代码(函数体)来执行。


        //Function这个构造函数 可以用来创建函数对象
        //语法:
        //0.一个参数都不传的情况  创建的就是一个空的函数
        //var 函数名 = new Function()
        //1.只传一个参数的情况 这个参数就是函数体
        //var 函数名 = new Function("函数体")
        //2.传多个参数的情况,最后一个参数为函数体,前面的参数都是该函数的形参名

        //练习:使用Function创建一个打印4句歌词的函数
//        var func = new Function("console.log('4句歌词');");
//        func();

        //举个栗子
        //创建一个计算两个数的和的函数
//        var sum = new Function("a", "b", "return a + b;");
//        console.log(sum(1, 1111));
        

        window.onload =function () {
            var script = document.getElementById("funcContent");
            var str = script.innerHTML;
            var max = new Function("arr", str);  // 最后一个参数当函数体来执行,前面的参数当成函数体的参数。
            console.log(max([1, 2, 3, 44, 5, 6]));
        }



        //如何解决使用Funciton创建函数时,代码过长的问题
        //1.可以使用"+"号拼接字符串 让代码换行
        //2.使用模板的方式,将代码写在模板标签内,获取该标签的内容
        //3.使用反引号(`) 引住字符串,那么就可以 换行了
        var str = `adfafdsa
                asdfas`;
        console.log(str);

    </script>
<script type="text/template" id="funcContent">
    var maxNum = arr[0];
    for(var i = 1; i<arr.length; i++){
        if(maxNum < arr[i]){
            maxNum = arr[i];
        }
    }
    return maxNum;
</script>
</head>
<body>

</body>
</html>




版权声明:本文为houyanhua1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。