Function.name属性有用吗?

时间:2018-03-21 07:14:39

标签: javascript

var func1 = function() {}
console.log(func1.name); // func1

从javascript开发人员的角度来看,这个属性是否有实时使用?

2 个答案:

答案 0 :(得分:3)

将函数作为参数传递给另一个函数时,可以将其用于调试目的,例如:

var fun1 = function(){};

function fun2(){};

var g = function(f){
    console.log("Invoking " + f.name);
    f();
}

if(Math.random() > 0.5){
    g(fun1);
} else {
    g(fun2);
}

答案 1 :(得分:1)

这个问题的答案将非常广泛,因为有数百个名为name的属性使用示例。它们在JavaScript documentation中有详细介绍。很少有例子如下。

更改功能名称。

var newName = "xyzName";
var f = function () {};
Object.defineProperty(f, 'name', {value: newName});
console.log(f.name); // will output xyzName

为了记录类堆栈,我们可以获得构造函数名称,如下例所示。

function a() {};
var b = new a();
console.log(b.constructor.name); // will output a

获取函数名称,如果它不是匿名的。

var getRectArea = function area(width, height) {
    return width * height;
}
getRectArea.name; //will output area