摘要:从正则表达式可知不管书写是还是在之后为注意在的已经开始返回原始内容包含空格输出输出可选是因为对象简写语法获取类型在后不可靠提供了修改返回的类型标签获取原型通过构造一个通过获得原型参考文档文章若有纰漏请大家补充指正谢谢殇
Function.prototype.toString
从正则表达式 /^s*(?:function)?*/
可知
1: GeneratorFunction 不管书写是 function* 还是 function * 在 Function.prototype.toString 之后为 function*
注意
在 ES2019 的 Function.prototype.toString revision 已经开始返回原始内容, 包含空格
function * fn() {}
Function.prototype.toString.call(fn);
node < 10, 输出 function* fn() {}
node >=10, 输出 function * fn() {}
2: function 可选是因为对象简写语法
var o = { *fn() {}, }; // *fn() {} console.info(Function.prototype.toString.call(o.fn));Object.prototype.toString 获取类型在 ES2015 后不可靠
var hasToStringTag = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol"; if (!hasToStringTag) { var str = toStr.call(fn); return str === "[object GeneratorFunction]"; }
ES2015 提供了 [Symbol.toStringTag] 修改 Object.prototype.toString() 返回的类型标签
function* fn() {} Object.defineProperty(fn, Symbol.toStringTag, { get() { return "MyTag"; }, }); // [object MyTag] console.log(Object.prototype.toString.call(fn));获取 GeneratorFunction 原型
通过 Function 构造一个 GeneratorFunction, 通过 Object.getPrototypeOf 获得原型
var getProto = Object.getPrototypeOf; var generatorFunc = Function("return function*() {}")(); var GeneratorFunction = getProto(generatorFunc);参考文档
is-generator-function
Function-prototype-toString-revision
文章若有纰漏请大家补充指正,谢谢~~
http://blog.xinshangshangxin.com SHANG 殇
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/102621.html
摘要:从一个对象里面提取需要的属性这篇文章一直想写了还想起那一夜我看到白天的代码,实在太美了。 koa源码lib主要文件有 application.js context.js request.js response.js application.js koa主要的逻辑处理代码整个koa的处理 context.js 将req,res方法 挂载在这,生成ctx上下文对象 requests....
摘要:最近读了的源码,理清楚了架构设计与用到的第三方库。本系列将分为篇,分别介绍的架构设计和个核心库,最终会手动实现一个简易的。本文来自心谭博客深入源码核心库原理所有系列文章都放在了。这一段逻辑封装在了核心库里面。 最近读了 koa2 的源码,理清楚了架构设计与用到的第三方库。本系列将分为 3 篇,分别介绍 koa 的架构设计和 3 个核心库,最终会手动实现一个简易的 koa。这是系列第 2...
摘要:老伙计今天我们来讲一下的还有一些自己写的库吧。我们常用来在中间件发出一些错误状态码。从而使得上级中间件可以这个错误从而响应默认的一个错误处理如果不是实例。看完全文都是好样的源码链接文档链接 hey 老伙计 今天我们来讲一下koa的context.js还有一些tj自己写的库吧。 context.js use strict; const createError = require(htt...
摘要:一些方法不应该这样不应该漫无目的地随手拿起一分源码,试图去通读。应该这样精心挑选要阅读的源码项目。这最好是与你的编程语言你的工作内容你的兴趣所在相关的,这样才能更切实地感受到阅读源码给你带来的益处,更有动力继续。 showImg(https://segmentfault.com/img/bVbcvmm?w=785&h=525); 怎么阅读源码 没有经验的技术差底子薄的初级程序员,如何阅...
阅读 813·2021-11-18 10:07
阅读 2306·2021-10-14 09:42
阅读 5220·2021-09-22 15:45
阅读 567·2021-09-03 10:29
阅读 3444·2021-08-31 14:28
阅读 1854·2019-08-30 15:56
阅读 3023·2019-08-30 15:54
阅读 975·2019-08-29 11:32