Node.js 12实战
上QQ阅读APP看书,第一时间看更新

3.5.3 方法的name属性

函数的name属性返回函数名。对象方法也是函数,因此也有name属性,例如:

上面的代码中,方法的name属性返回函数名(方法名)。如果使用了取值函数,就会在方法名的前面加上get。如果是存值函数,方法名的前面就会加上set。

有两种特殊情况,bind方法创造的函数,name属性返回“bound”加上原函数的名字;Function构造函数创造的函数,name属性返回“anonymous”。

(new Function()).name // "anonymous"
var doSomething = function() {
  // ...
};
doSomething.bind().name // "bound doSomething"

如果对象的方法是一个Symbol值,那么name属性返回的是这个Symbol值的描述。

const key1 = Symbol('description');
const key2 = Symbol();
let obj = {
  [key1]() {},
  [key2]() {},
};
obj[key1].name // "[description]"
obj[key2].name // ""

上面的代码中,key1对应的Symbol值有描述,key2没有描述。