[英]Do I have to avoid being invasive when building my own JavaScript library or jQuery plugin?
最近,我一直在構建一些JavaScript庫以及一些jQuery插件,我有一個'utils.js'文件,我將所有自定義函數放入Array
, String
, Number
等,並將其包含在final中縮小版本的庫或插件。
像這樣的東西:
String.prototype.custom_method = function() {
// Do custom stuff
};
Array.prototype.custom_method = function() {
// Do custom stuff
};
所以,這些是我的問題:
鑒於jQuery和Modernizr做同樣的事情(提供了很多開箱即用的能力,而普通人只使用了10%)我沒有看到問題。
它臃腫了嗎? 也許。 理想的做法是只包含您使用的文件(Google的插件方法,包括您需要的內容之一),但是我沒有看到比已經存在的更大的威脅。
我認為你划分它們是朝着正確的方向邁出的一步,因為多個庫可能需要它們(沒有重復的聲明)。 但是,如果你真的擔心它,你可以做一個測試聲明設置:
if (typeof foo === 'undefined'){
function foo(){}
}
但是,再一次,它需要包含在您發布/構建的每個庫中/上,而不是“無所不包”的庫。
以下是對您要問的內容的一個很好的討論。
http://perfectionkills.com/extending-built-in-native-objects-evil-or-not/
簡短回答:擴展原生類型並不是很好,但還可以。 像underscore.js一樣包裝它們會更好,因為這樣就不會有未來的沖突。
這取決於觀眾。 如果向默認類添加或覆蓋方法,則永遠不會贏得企業受眾。 誰知道可能導致的沖突? 看一下underscore.js http://documentcloud.github.com/underscore/一個不打算使用裝飾器方法做到這一點的庫。 這對於擁有代碼庫的用戶來說更加友好,除了代碼之外,代碼可以包括善良知道什么。
但是,如果你的代碼可以自己運行,那么在一個孤島中,去吧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.