1.Function这个构造函数可以用来新建函数对象
var
func =
new
Function
(
"console.log('我是动态创建的函数');console.log('111111')"
)
;
//这个是创建对象的方法,所以证明函数也是对象,并且由开头字母大写看出来是构造函数
func()
;
2.语法:var 函数名 = new Function(“函数里里面的语句;函数体里面的语句”)
(1)Function函数所有的参数都是字符串
(2)Function函数的作用就是将所有的参数组合起来变成一个函数
(3)如果只传一个参数,那么这个函数就是函数体
(4)如果传多个参数,那么最后一个参数表示函数体,前面的参数代表将要创建的函数的参数
(5)如果不传参数,则表示创建一个空函数
3.如何解决使用Function创建函数时代码过长的问题
(1)以分隔符逗号作为标记进行换行
(2
)使用字符串拼接(+号)让代码换行
练习:传入一个数组,求这个数组中最大的数
var
max =
new
Function
(
"arr"
,
"var maxNum = arr[0];"
+
"for(var i = 1 ; i < arr.length ; i ++){"
+
"if(maxNum < arr[i]){"
+
"maxNum = arr[i];"
+
"}"
+
"}"
+
"return maxNum;"
)
;
console
.
log
(max([
1
,
2
,
3
,
4
,
5
,
6
]))
;
(3)使用模板的方式将代码写在模板标签内,获取该标签的内容
<script>
window
.onload =
function
() {
var
script =
document
.
getElementById
(
"funcContent"
)
;
var
str = script.
innerHTML
;
var
max =
new
Function
(
"arr"
,
str)
;
console
.
log
(max([
1
,
2
,
3
,
4
,
5
,
6
]))
;
}
</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>