我正在尝试为功能设置速度测试。当我直接传递一个函数时,它可以正常工作,但是我想为同事提供一个剪切和粘贴自己的表单。
function sendTest() {
//fName, fContent
var fName = document.getElementById("fName").value;
var fContent = document.getElementById("fContent").value;
var f = new Function(fName, fContent);
f.name = fName;
testTime(f);
}
testTime()是评估性能的函数,评估执行时间是从sendTest()正常工作,但我无法从testTime()访问函数名称以显示带有结果的函数名称。 f.name和f.fName都是未定义的。
一个函数是一个对象,对吗?所以我应该能够为它申请名称吗?
答案 0 :(得分:1)
对于您的具体问题,这似乎是一个更简单的答案,而不是其他人将您的问题标记为副本。
在ES6中,函数的内置.name
属性是不可写的,因此无法分配给它(link to specific section of draft ES6 spec)。如果要按照自己的方式分配名称,则应该能够使用不同的属性名称。
使用不同的属性名称进行演示:http://jsfiddle.net/jfriend00/6PVMq/
f = new Function("log('Hello')");
f.myName = "sayHi";
function testFunc(func) {
log("function name is: " + func.myName);
func();
}
testFunc(f);