日本视频播放免费线上观看-日本视频播放-日本视频www色变态-日本视频www-成人 在线播放-成人 日韩 在线

Internet Develppment
互聯網開發& 推廣服務提供商

我們擅長商業策略與用戶體驗的完美結合。

歡迎瀏覽我們的案例。

首頁 > 新聞中心 > 新聞動態 > 正文

JavaScript命名沖突不可避免?沖突源有哪些

發布時間:2022-03-17 09:16:24來源:博客園

  從 1995 年開始,本文作者 Dr.Axel Rauschmayer 就專門從事 JavaScript 和 Web 開發,已經有 30 多年了。2010 年,他獲得慕尼黑大學信息學博士學位。自 2011 年以來,他一直在 2ality.com 寫博客,并寫了幾本關于 JavaScript 的書,比如《JavaScript for impatient programmers》、《Deep JavaScript: Theory and techniques》等。今天這篇文章就來自于他的博客,介紹了在 JavaScript 命名沖突時,現有代碼如何強制對提議的功能進行重命名。

  不斷發展的 JavaScript:不要破壞 web!

  JavaScript 的一個發展核心原則就是"不要破壞 Web":在將新特性添加到語言中后,所有現有代碼都必須能夠繼續運行。

  這樣有一個壞處,就是不能從語言中刪除現有的 quirks。但這樣做益處多多,比如舊的代碼可以繼續運行,而且升級到新的 ECMAScript 版本很簡便等等。

  在為新特征(如方法名稱)選擇名稱時,需要進行一個重要的測試,即在瀏覽器的 nightly 版本(早期預發布版本)中添加該特征,并檢查是否有任何網站出現錯誤。

  接下來將介紹過去案例中的的四個沖突源,當產生這四種沖突時,就必須重命名特征。

  沖突源1:向內置原型添加方法

  在 JavaScript 中,我們可以通過改變其原型來為內置值添加方法:

  神奇的是,語言可以通過這種方式改變。這種運行時的修改被稱為猴子補丁(monkey patch)。

  什么是猴子補丁?

  如果我們給內置原型添加方法,我們就是在運行時修改一個軟件系統。這樣的修改被稱為猴子補丁。簡單來說,對其含義有兩種可能的解釋。

  這個叫法起源于 Zope 框架,人們在修正 Zope 的 Bug 的時候經常在程序后面追加更新部分,這些被稱作是“雜牌軍補丁(guerilla patch)”,后來 guerilla 就漸漸的寫成了 gorllia ((猩猩),再后來就寫了 monkey (猴子),所以猴子補丁的叫法是這么莫名其妙的得來的。

  另一種說法是,它指的是搞亂(monkeying about)代碼。

  反對改變內置原型的原因

  對任何類型的全局命名,都會存在名稱沖突的風險。如果有解決沖突的機制,就能規避風險。例如:

  全局模塊是通過裸模塊指定器或 URLs 來識別的。前者之間的名稱沖突可以通過 npm 注冊表來解決。后者之間的名稱沖突可以通過域名注冊處來解決。

  可以通過將符號添加到 JavaScript 中,以避免方法之間的名稱沖突。例如,任何對象都可以通過添加一個鍵為 .NET 的方法而成為可迭代的。由于每個符號都是唯一的,所以這個鍵永遠不會與任何其他屬性鍵 .Symbol.iterator 發生沖突。

  然而,帶有字符串鍵的方法會導致名稱沖突:

  不同的庫可能會對他們添加到 .Array.prototype 的方法使用相同的名字。

  如果一個名字已經被某個庫使用了,那么這個名稱就不能用于命名 JavaScript 標準庫的一個新特性。

  具有諷刺意味的是,謹慎地添加一個方法可能會適得其反:

  我們會檢查一個方法是否已經存在。如果沒有,我們就添加它。

  如果我們要實現一個 polyfill(模擬原生 Web 平臺功能),將新的 JavaScript 方法添加到不支持它的引擎中,那么這個技術就能發揮作用。(順便說一下,這是修改內置原型的一個合法用例。也許是唯一的一個)。

  然而,如果我們對一個普通庫的方法使用這種技術,然后 JavaScript 獲取具有相同名稱的方法,那么這兩種實現的工作方式就不一樣了,并且使用庫方法的所有代碼在使用內置方法時都會中斷。

  必須更改名稱的原型方法示例

  ES6 的方法最初是與 JavaScript 框架 MooTools.String.prototype.includes () .contains ()全局添加的方法相沖突。

  ES2016 的方法最初是與 MooTools.Array.prototype.includes () .contains ()添加的方法相沖突。

  ES2019 的方法最初是和 MooTools.Array.prototype.flat () .flatten ()相沖突。

  修改內置原型并不總是糟糕的

  你可能會對 MooTools 的創建者的粗心大意感到疑惑。但是,向內置原型添加方法并不總是糟糕的。在 ES3(1999 年 12 月)和 ES5(2009 年 12 月)之間,JavaScript 是一種停滯不前的語言。MooTools 和 Prototype 等框架改進了它。這些方法的缺點只有在 JavaScript 的標準庫再次增加之后才會凸顯出來。

  沖突源2:檢查一個屬性的存在

  ES2022 的方法最初是 .NET 的。因為以下庫檢查屬性以確定對象是否是一個 HTML 集合(而不是一個數組),所以它必須被重新命名:Magic360、YUI 2、YUI 3.Array.prototype.at () .item () .item

  沖突源3:檢查全局變量是否存在

  自 ES2020 以來,我們可以通過 globalThis 訪問全局對象。Node.js 一直使用該名稱來實現此目的。最初的計劃是為所有平臺標準化該名稱 .global

  然而,以下模式經常被用來確定當前平臺:

  如果瀏覽器也有一個名為 .global 的全局變量,這種模式(以及類似的模式)就會失效。因此,標準化的名稱被改為 .globalglobalThis。

  沖突源4:通過創建局部變量 with 語句

  JavaScript 的聲明 with 語句

  長期以來,人們一直不鼓勵使用 JavaScript 的 with 語句,甚至在 ES5 中引入的嚴格模式中也被定為非法。在其他地方,嚴格模式在 ECMAScript 模塊中是活躍的。

  該語句將一個對象的屬性變成局部變量:with

  由 with 語句引起的沖突

  框架 Ext.js 使用的代碼與下面的片段有些相似點:

  當 ES6 方法被添加到 JavaScript 中時,如果用 Array(B行)來調用它,它就會失效。該語句將 Array 的所有屬性變成了局部變量。其中一個是繼承的屬性。因此,A行中的語句已記錄,不再是參數

  Array.prototype.values () myFunc () withvalues.valuesArray.prototype.valuesvalue

  Unscopables:防止 with 導致的沖突

  公共符號Symbol.unscopables 允許對象隱藏語句中的某些屬性。它只在標準庫中使用一次,對于 Array.prototype:with

  結論

  以上提出了 JavaScript 結構與現有代碼發生名稱沖突的四種方式:

  向內置原型添加方法

  檢查屬性是否存在

  檢查全局變量是否存在

  創建局部變量 with

  沖突的某些來源很難預測,但存在以下一些一般規則:

  不要更改全局數據。

  避免檢查是否存在全局數據。

  請注意,內置值將來可能會獲得其他屬性(自己的或繼承的屬性)。

  對于庫來說,為 JavaScript 值提供功能的最安全方法是通過函數。如果 JavaScript 得到一個 pipe operator,我們也可以像方法一樣使用它們。
  (邯鄲微信平臺

最新資訊
? 2018 河北碼上網絡科技有限公司 版權所有 冀ICP備18021892號-1   
? 2018 河北碼上科技有限公司 版權所有.
小说 亚洲 无码 精品| 尤物在线视频.YW163.成年| 加勒比AV一本大道香蕉大在线| 又湿又紧又大又爽A视频| 色翁荡熄又大又硬又粗又视频 | 中国熟妇内谢69XXXXX| 色欲av伊人久久大香线蕉影院| 久久精品久久精品久久39| 丁香色婷婷国产精品视频| 亚洲中文无码线在线观看| 少妇人妻14页_麻花色| 蜜桃亚洲AV无码一区二区三区| 国产精品一区二区AV| BGMBGMBGM老太太XX一| 亚洲精品无码成人片| 少妇性活BBBBBBBBB小说| 蜜臀久久99精品久久久久久| 韩国19禁床震无遮掩免费| 锕锕锕锕锕锕锕好疼免费视频 | 一二三四视频社区3在线高清| 少妇无码AV无码专区线| 每天都在挨CAO中醒来H| 国产下药迷倒白嫩美女网站 | 亚洲午夜无码毛片av| 天堂…在线最新版在线| 女人无遮挡无内衣内裤网站| 精品久久久久中文字幕日本| 国产99久久久久久免费看| 99热久RE这里只有精品小草| 亚洲综合蜜臀AV| 亚州熟妇无码AV线播放| 日韩精品人成在线播放| 男女作爱在线播放免费网站| 精品人妻一区二区三区乱码| 国产精品后入内射日本在线观看| YSL千人千色AE86V10| 正文畸情~内裤奇缘小说| 亚洲国产AV玩弄放荡人妇| 熟女少妇一区二区三区| 欧美一性一乱一交一视频C| 久久青草免费福利资源站| 国产真实乱对白精彩久久| 粉嫩虎白女流水白浆在线播放| 91麻豆精品无码一区二区三区| 亚洲影院丰满少妇中文字幕无码| 小辣椒AV福利在线网站| 舌头伸进去添的我好爽高潮电影| 欧美久久高潮久久高潮| 秘密列车在线全集免费观看| 久久精品国产亚洲AV瑜伽| 国内精品人妻无码久久久影院导航 | 麻豆╳╳╳乱女另类| 国外BBOX表演视频| 国产成人A∨激情视频厨房| А√天堂资源中文最新版地址| _97夜夜澡人人爽人人喊_欧美| 亚洲午夜无码久久久久蜜臀AV| 亚洲爆乳中文字幕无码专区网站| 忘忧草在线影院WWW神马| 日韩人妻无码精品二专区| 秋霞电影院yy2933| 欧美XXXX狂喷| 年轻的少妇A级伦理| 麻豆XXXXXX在线观看| 久久婷婷国产剧情内射白浆 | 国产成人亚洲综合无码99| 波多野结衣AV影音先锋| JAPANESEⅩⅩⅩHD69| AV无码人妻无码男人的天堂| 18禁白丝超短裙自慰喷水| 重口老太大和小伙乱| 2020久久国产综合精品SWA| 中文字幕亚洲欧美专区| 中文字幕人妻不在线无码视频| 瑜伽裤国产一区二区三区| 又小又紧女MAGNET| 在线观看日本亚洲一区 | 无码人妻精品一区二区三区免费看| 色婷婷五月综合丁香中文字幕| 日韩精品人妻系列无码专区免费| 日产精品乱码卡一卡2卡三网站 | 国产乱人伦AV麻豆网| 国产精品免费久久久久影院| 国产强伦姧在线观看无码| 国产亚洲欧洲AⅤ综合一区| 国产在线视频一区二区三区| 果冻传媒一区二区天美传媒| 国外免费B2B网站| 极品少妇被猛得白浆直流草莓| 互换人妻ⅩXXBBBB| 久久SE精品一区精品二区国产| 久久精品国产只有精品2020| 久久久久精品久久九九| 久久综合伊人77777| 免费A级毛片无码A∨中文字幕| 内射人妻无码色AV麻豆| 欧美熟妇SEXFREE| 日产无人区一线二线三线观看 | 欧美精品黑人成人另类视频| 欧洲美女与动交ZOZ0Z| 日本亚洲色大成网站www久久| 双胞胎一前一后夹心饼干年下| 无码AV免费精品一区二区三区| 亚洲 熟 图片 小说 乱 妇| 亚洲精品无码AV中文字幕电影网| 伊人久久综合无码成人网| 99亚洲国产精品精华液| 宝贝小嫩嫩好紧好爽H在线视频| 大香伊人久久精品一区二区 | 啊灬啊灬啊灬快灬深高潮了亚洲乱色视频在线观看 | 成人无码区免费AⅤ片在线观看| 国产A1A2A3| 黑人与日本XXXXXTV| 浪潮AV色综合久久天堂| 欧美精产国品一二三区别| 日韩人妻无码专区精品| 午夜.DJ高清在线播放视频| 亚洲精品无码久久久久秋霞| 中文字幕,久热精品,视频在线| ているの天堂资源WWW| 国产成人无码区免费A∨视频网站 国产成人无码免费视频在线 | 黑人巨大超大VIDEOSGRA| 久久九九久精品国产88| 欧美人与动欧交视频| 试看AAAA啪啪片120秒| 亚洲国产成人精品无码区在线秒播 | 亚洲国产精品久久久久久久| 中国MACBOOKPRO高清| 粗长巨龙挤进新婚少妇| 国精产品一二三四区产品 | 国产中国男男GayGay| 久久夜色撩人精品国产AV| 日本精品一区二区三区试看| 亚洲AV无码丰满尖叫高潮| 中文字幕无码专区人妻制服 | 国产成人无码区免费内射一片色欲 | 国产亚洲AV片在线观看播放按摩| 巨大黑人XXXXX高潮| 日本老熟妇ⅩXX| 亚洲成人av在线| av在线一区二区三区| 国产精品V欧美精品∨日韩| 久久久97精品国产一区蜜桃 | 亚洲妇女行蜜桃AV网网站| 91人人妻人人澡人人爽人人精品 | 久久无码专区国产精品S| 人人爽人人模人人人爽人人爱| 性少妇中国内射XXXX狠干| 中文字幕乱码无码人妻系列蜜桃| 丰满少妇被猛烈高清播放| 久久精品无码一区二区三区不卡 | 亚洲精品久久久久无码AV片软件| 99RIAV国产精品视频| 国产精品无码成人午夜电影| 美国ZOOM人与ZOOM| 无码国产乱人伦偷精品视频| 中国老太婆XXXXX| 国产精品毛片一区二区三区| 美女用香蕉练口活视频| 无码AⅤ精品一区二区三区浪潮 | 波多野结衣在线观看AV| 黑人强伦姧人妻完整版| 人妻中字视频中文乱码| 亚洲乱码av一区二区三区| 成年AV免费网址大全超清| 久久精品国产亚洲A∨麻豆| 色欲综合久久躁天天躁| 又色又爽又黄的视频APP软件下| 国产成人精品免费视频大全软件 | 久久精品女人天堂AV免费观看| 日韩精品区一区二区三VR| 伊人久久大香线蕉在观看| 国产精品JIZZ在线观看| 拧花蒂尿用力按凸起喷水尿AV| 亚洲AV无码乱码在线观看牲色| 被滋润的娇妻疯狂呻吟| 久久精品国产只有精品2020| 少妇与大狼拘作爱| 18禁黄网站禁片无遮挡观看AP| 黑人荫道BBWBBB大荫道| 日韩欧无码一二三区免费不卡| 夜夜爽77777妓女免费看| 国产精品久久国产精品99盘| 女人18毛片A级女人18水真多| 亚洲VA欧美VA国产VA综合| 动漫精品啪啪一区二区三区| 免费国产在线精品一区| 亚洲JLZZJLZZ少妇| 丰满护士巨好爽好大乳小说| 男人的天堂免费A级毛片无码| 亚洲精品自在在线观看| 国产精品久久久久精品日日| 人妻丰满熟妇AⅤ无码无码区免费 人妻丰满熟妇AⅤ无码区在线电影 | 日韩精品视频一区二区| 余年周婉小说全文免费阅读完整版| 国产无遮挡裸体免费直播| 色综合久久中文综合网| FREE嫩白18SEX性HD处| 麻花传媒MV一二三区别在哪里| 亚洲人成精品久久久久|