将自定义属性分配给动态生成的JS函数

时间:2014-06-15 03:19:18

标签: javascript performance function dynamic

我正在尝试为功能设置速度测试。当我直接传递一个函数时,它可以正常工作,但是我想为同事提供一个剪切和粘贴自己的表单。

    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都是未定义的。

一个函数是一个对象,对吗?所以我应该能够为它申请名称吗?

1 个答案:

答案 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);