成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

閱讀 is-generator-function 源碼

cnsworder / 3337人閱讀

摘要:從正則表達(dá)式可知不管書(shū)寫(xiě)是還是在之后為注意在的已經(jīng)開(kāi)始返回原始內(nèi)容包含空格輸出輸出可選是因?yàn)閷?duì)象簡(jiǎn)寫(xiě)語(yǔ)法獲取類型在后不可靠提供了修改返回的類型標(biāo)簽獲取原型通過(guò)構(gòu)造一個(gè)通過(guò)獲得原型參考文檔文章若有紕漏請(qǐng)大家補(bǔ)充指正謝謝殤

Function.prototype.toString

從正則表達(dá)式 /^s*(?:function)?*/
可知

1: GeneratorFunction 不管書(shū)寫(xiě)是 function* 還是 function *Function.prototype.toString 之后為 function*

注意
ES2019 的 Function.prototype.toString revision 已經(jīng)開(kāi)始返回原始內(nèi)容, 包含空格

function * fn() {}
Function.prototype.toString.call(fn);
node < 10, 輸出 function* fn() {}
node >=10, 輸出 function * fn() {}

2: function 可選是因?yàn)閷?duì)象簡(jiǎn)寫(xiě)語(yǔ)法

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() 返回的類型標(biāo)簽

function* fn() {}

Object.defineProperty(fn, Symbol.toStringTag, {
  get() {
    return "MyTag";
  },
});

// [object MyTag]
console.log(Object.prototype.toString.call(fn));
獲取 GeneratorFunction 原型

通過(guò) Function 構(gòu)造一個(gè) GeneratorFunction, 通過(guò) Object.getPrototypeOf 獲得原型

var getProto = Object.getPrototypeOf;
var generatorFunc = Function("return function*() {}")();
var GeneratorFunction = getProto(generatorFunc);
參考文檔

is-generator-function

Function-prototype-toString-revision

文章若有紕漏請(qǐng)大家補(bǔ)充指正,謝謝~~  
http://blog.xinshangshangxin.com SHANG 殤

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/102621.html

相關(guān)文章

  • koa源碼閱讀之目錄結(jié)構(gòu)與輔助庫(kù)相關(guān)

    摘要:從一個(gè)對(duì)象里面提取需要的屬性這篇文章一直想寫(xiě)了還想起那一夜我看到白天的代碼,實(shí)在太美了。 koa源碼lib主要文件有 application.js context.js request.js response.js application.js koa主要的邏輯處理代碼整個(gè)koa的處理 context.js 將req,res方法 掛載在這,生成ctx上下文對(duì)象 requests....

    sherlock221 評(píng)論0 收藏0
  • 深入koa源碼(二):核心庫(kù)原理

    摘要:最近讀了的源碼,理清楚了架構(gòu)設(shè)計(jì)與用到的第三方庫(kù)。本系列將分為篇,分別介紹的架構(gòu)設(shè)計(jì)和個(gè)核心庫(kù),最終會(huì)手動(dòng)實(shí)現(xiàn)一個(gè)簡(jiǎn)易的。本文來(lái)自心譚博客深入源碼核心庫(kù)原理所有系列文章都放在了。這一段邏輯封裝在了核心庫(kù)里面。 最近讀了 koa2 的源碼,理清楚了架構(gòu)設(shè)計(jì)與用到的第三方庫(kù)。本系列將分為 3 篇,分別介紹 koa 的架構(gòu)設(shè)計(jì)和 3 個(gè)核心庫(kù),最終會(huì)手動(dòng)實(shí)現(xiàn)一個(gè)簡(jiǎn)易的 koa。這是系列第 2...

    tyheist 評(píng)論0 收藏0
  • koa源碼閱讀之context.js/koa-convert/is-generator-functi

    摘要:老伙計(jì)今天我們來(lái)講一下的還有一些自己寫(xiě)的庫(kù)吧。我們常用來(lái)在中間件發(fā)出一些錯(cuò)誤狀態(tài)碼。從而使得上級(jí)中間件可以這個(gè)錯(cuò)誤從而響應(yīng)默認(rèn)的一個(gè)錯(cuò)誤處理如果不是實(shí)例。看完全文都是好樣的源碼鏈接文檔鏈接 hey 老伙計(jì) 今天我們來(lái)講一下koa的context.js還有一些tj自己寫(xiě)的庫(kù)吧。 context.js use strict; const createError = require(htt...

    caikeal 評(píng)論0 收藏0
  • 一篇文章把本該屬于你的源碼天賦還給你

    摘要:一些方法不應(yīng)該這樣不應(yīng)該漫無(wú)目的地隨手拿起一分源碼,試圖去通讀。應(yīng)該這樣精心挑選要閱讀的源碼項(xiàng)目。這最好是與你的編程語(yǔ)言你的工作內(nèi)容你的興趣所在相關(guān)的,這樣才能更切實(shí)地感受到閱讀源碼給你帶來(lái)的益處,更有動(dòng)力繼續(xù)。 showImg(https://segmentfault.com/img/bVbcvmm?w=785&h=525); 怎么閱讀源碼 沒(méi)有經(jīng)驗(yàn)的技術(shù)差底子薄的初級(jí)程序員,如何閱...

    chanjarster 評(píng)論0 收藏0
  • 精讀《源碼學(xué)習(xí)》

    摘要:精讀原文介紹了學(xué)習(xí)源碼的兩個(gè)技巧,并利用實(shí)例說(shuō)明了源碼學(xué)習(xí)過(guò)程中可以學(xué)到許多周邊知識(shí),都讓我們受益匪淺。討論地址是精讀源碼學(xué)習(xí)如果你想?yún)⑴c討論,請(qǐng)點(diǎn)擊這里,每周都有新的主題,周末或周一發(fā)布。 1. 引言 javascript-knowledge-reading-source-code 這篇文章介紹了閱讀源碼的重要性,精讀系列也已有八期源碼系列文章,分別是: 精讀《Immer.js》源...

    aboutU 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<