JavaScript中常見的Polyfill介紹
在多姿多彩的JavaScript世界,Polyfill如同一座架在瀏覽器兼容性鴻溝之上的橋梁,讓新生的Web特性得以在陳舊瀏覽器中生根發(fā)芽。本文將介紹常見的JavaScript Polyfill兼容方案,并舉例說明它們的應(yīng)用。
Promise
旅程始于Promise,異步編程的瑰寶。在舊環(huán)境中缺失此寶物時,es6-promise
庫為其承擔(dān)擔(dān)保角色。
// 引入es6-promise并實現(xiàn)polyfill require('es6-promise').polyfill(); 或者 const Promise = window.Promise = require('es6-promise').Promise;
Array.prototype.includes
搜索Array中的元素變得如此簡單。如果環(huán)境尚未支持,array-includes
庫即刻效力。
// 引用array-includes庫 var includes = require('array-includes'); includes.shim(); // 執(zhí)行shim方法,將includes方法添加到Array.prototype var arr = [ 'one', 'two' ]; includes(arr, 'one'); // true includes(arr, 'three'); // false includes(arr, 'one', 1); // false
Object.assign
復(fù)制對象得心應(yīng)手,但不在每處可行。object-assign
便是解答。
// 使用object-assign模塊來模擬Object.assign var assign = require('object-assign'); objectAssign({foo: 0}, {bar: 1}); //=> {foo: 0, bar: 1} // multiple sources objectAssign({foo: 0}, {bar: 1}, {baz: 2}); //=> {foo: 0, bar: 1, baz: 2} // overwrites equal keys objectAssign({foo: 0}, {foo: 1}, {foo: 2}); //=> {foo: 2} // ignores null and undefined sources objectAssign({foo: 0}, null, {bar: 1}, undefined); //=> {foo: 0, bar: 1}
Fetch
遠(yuǎn)程數(shù)據(jù)的擒取者,F(xiàn)etch API。未得原生支持則啟用whatwg-fetch
。
// 使用whatwg-fetch來引入fetch的polyfill require('whatwg-fetch'); // 或者 import 'whatwg-fetch' // 使用 fetch('/users.html') .then(function(response) { return response.text() }).then(function(body) { document.body.innerHTML = body })
Array.prototype.find
尋覓數(shù)組中的寶物不再艱難,array.prototype.find
庫為探索者提供指南。
// 引用array.prototype.find require('array.prototype.find').shim();
URLSearchParams
解析查詢字符串,構(gòu)建URL參數(shù)無須雕琢,url-search-params-polyfill
輕松辦到。
// as a function const find = require('array.prototype.find'); find([1, 2], function (x) { return x === 2; }); // 2 // to shim it require('array.prototype.find').shim(); // Default: [1, 5, 10, 15].find(function (a) { return a > 9; }) // 10
String.prototype.startsWith
判斷字符串始于何處?使用string.prototype.startswith
,答案盡在掌握。
// 添加String.prototype.startswith的Polyfill require('string.prototype.startswith').shim();
Array.from
將非數(shù)組之物變形為數(shù)組,“Array.from”應(yīng)聲而出,array-from
便能施法。
// 使用array-from模擬Array.from功能 const from = require('array.from'); const assert = require('assert'); assert.deepEqual(from('abc'), ['a', 'b', 'c']);
Symbol
在現(xiàn)代編程語墓中綻放的Symbol,es6-symbol
確保其于舊環(huán)境中同樣燦爛。
// 引入es6-symbol實現(xiàn)polyfill const Symbol = require("es6-symbol"); const symbol = Symbol("My custom symbol"); const x = {}; x[symbol] = "foo"; console.log(x[symbol]); ("foo");
Number.isNaN
確認(rèn)NaN,無需多疑。is-nan
提供確鑿答案。
// 使用is-nan代替Number.isNaN Number.isNaN = require('number.isnan'); var assert = require('assert'); assert.notOk(Number.isNaN(undefined)); assert.notOk(Number.isNaN(null)); assert.notOk(Number.isNaN(false)); assert.notOk(Number.isNaN(true)); assert.notOk(Number.isNaN(0)); assert.notOk(Number.isNaN(42)); assert.notOk(Number.isNaN(Infinity)); assert.notOk(Number.isNaN(-Infinity)); assert.notOk(Number.isNaN('foo')); assert.notOk(Number.isNaN(function () {})); assert.notOk(Number.isNaN([])); assert.notOk(Number.isNaN({})); assert.ok(Number.isNaN(NaN));
結(jié)語
在兼容性的海洋中航行,Polyfill為船,開發(fā)者為帆。每一段代碼都是原汁原味的探險,而Polyfill則確保舊世界與新世界之間的通行無阻。向著更宜居的互聯(lián)網(wǎng)邁進(jìn),在每個角落激發(fā)代碼的魅力,這是開發(fā)的藝術(shù),這是進(jìn)步的旋律。
到此這篇關(guān)于JavaScript中常見的Polyfill介紹的文章就介紹到這了,更多相關(guān)JavaScript Polyfill內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript常見的函數(shù)中的屬性與方法總結(jié)
當(dāng)定義和調(diào)用函數(shù)時,JavaScript?函數(shù)對象會自動具有一些特定的屬性,本文為大家總結(jié)了一些常見的屬性和方法,感興趣的小伙伴可以了解一下2023-05-05trackingjs+websocket+百度人臉識別API實現(xiàn)人臉簽到
這篇文章主要介為大家詳細(xì)紹了trackingjs+websocket+百度人臉識別API實現(xiàn)人臉簽到功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11《JavaScript高級程序設(shè)計》閱讀筆記(一) ECMAScript基礎(chǔ)
ECMAScript基礎(chǔ),主要包括語法,變量,關(guān)鍵字,保留字,原始值和引用值等2012-02-02詳解JavaScript正則表達(dá)式之分組匹配及反向引用
這篇文章主要介紹了詳解JavaScript正則表達(dá)式之分組匹配及反向引用 的相關(guān)資料,需要的朋友可以參考下2016-03-03JS實現(xiàn)動態(tài)給標(biāo)簽控件添加事件的方法示例
這篇文章主要介紹了JS實現(xiàn)動態(tài)給標(biāo)簽控件添加事件的方法,結(jié)合實例形式分析了javascript簡單實現(xiàn)動態(tài)添加事件的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05