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版权协议,转载请附上原文出处链接和本声明。