2016-11-17 93 views
0

我有一個項目,其中使用Array.find()。由於它不被所有瀏覽器支持,我有一個要求找到這種方法的所有用法,用lodash _.find()方法替換它們。如何查找JS代碼中僅適用於ES2015的方法?

是否有可能以某種方式分析代碼並找到在ECMAScript 2015之前JavaScript中不可用的方法?

+1

作爲一種替代方案,除非需要支持IE8,否則只需使用Object.defineProperty在Array.prototype上創建一個不可枚舉的方法即可簡單地填充/填充Array.find。 –

+0

現在的問題是它是作爲一個polyfill生成的,我想刪除polyfill並使用lodash。 –

+0

看不到多少指向,但顯然我沒有完整的圖片。 –

回答

-1

我不會推薦觸摸原型,如果你能避免它,你可以做什麼卻是在頁面加載測試,看看

Array.prototype.find 

是不確定的。如果是,你可以將其替換爲:

if(Array.prototype.find == undefined){ 
    Array.prototype.find = function find(n){ 
    return _.find(this, n) 
    } 
} 

確保lodash加載過程後腳本此位運行。

這意味着你可以保持相同的語法,如果沒有定義Array.prototype.find它會與你lodash版本來替換它,因此,例如:

var test = [1,2,3,4] 
test.find(function(n){return n > 3}) 

會使用數組返回4。發現如果支持在瀏覽器或做:

_.find(test, function(n){return n > 3}) 

如果Array.find是在瀏覽器不支持的,這將避免你需要改變所有的Array.find電話以及手動。

正如我所說我不特別推薦觸摸原型,如果你可以避免它,但這會給你你後面的結果。

相關問題