軟件和教堂非常相似——建成之后我們就在祈禱。
不在內置對象的原型上新增方法
寫法
if (typeof Object.prototype.myMethod !== "function") {
Object.prototype.myMethod = function () {
// implementation...
};
}
內置對象的原型上新增方法會降低代碼的可維護性,讓代碼變得不可預測。如果要寫一些內置對象的工具方法,用將對象做為參數傳入的方式,如
function arrayEvery(array) {...}
Underscore.js 就是這么做的。
例外:只有在舊瀏覽器上實現新瀏覽支持的原型方法時,才在內置對象的原型上新增方法。如:
// some 是 ES6 中新出的方法。
if (typeof Array.prototype.some !== "function") {
Array.prototype.some = function () {
};
}
所有 JavaScript 模式:http://shichuan.github.io/javascript-patterns/
文章推薦
《【深度長文】JavaScript數組所有API全解密》
背景
數組是一種非常重要的數據類型,它語法簡單、靈活、高效。 在多數編程語言中,數組都充當著至關重要的角色,以至于很難想象沒有數組的編程語言會是什么模樣。特別是JavaScript,它天生的靈活性,又進一步發揮了數組的特長,豐富了數組的使用場景。可以毫不夸張地說,不深入地了解數組,不足以寫JavaScript。
概要
系統講解了JavaScript數組的各種特性和API。包含了 ES6 新增一些新特性。
閱讀地址:http://louiszhai.github.io/2017/04/28/array/
往期前端早讀課地址:http://www.lxweimin.com/c/0fda3d387a6d