
上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没有描述。