Appearance
判断函数是否标记了 async
js
function af() {}
async function bf() {}
af.__proto__
ƒ () { [native code] }
bf.__proto__
AsyncFunction {Symbol(Symbol.toStringTag): 'AsyncFunction'}可以发现二者原型不同,于是尝试 bf.constructor === AsyncFunction。但是报错:
VM5521:1 Uncaught ReferenceError: AsyncFunction is not defined
at <anonymous>:1:20因为 AsyncFunction 没有暴露给 js。
发现 Symbol(Symbol.toStringTag): "AsyncFunction",所以
js
Object.prototype.toString.call(bf) === '[object AsyncFunction]'
> true
bf[Symbol.toStringTag] === 'AsyncFunction'
> true