javascript的一點胡思亂想

來源:互聯網
上載者:User

忽然覺得當前的JavaScript庫設計的多多少少有點不方便。

尤其是當使用一個object做config的時候。

 

比如以下的代碼我們應該是相當熟悉的:

 

 1 $.ajax({

2     url:'/books/10086',
3     type:'GET',
4     cache:false
5 }); 

 

 OK, 那麼, 對於一些複雜的config, 我們如何知道, 用什麼名字? 比如作者支援的是content-type, 還是data-type, 還是MIME-Type, 還是他用了什麼別的名字?

我們沒法知道。 我們只能去查文檔。 而文檔去哪查, 往往讓我們頭疼不已。 有的開源的東西壓根就沒文檔。 你想知道怎麼用? 去看代碼吧。

 

實際上設計者只要稍稍做個改變就行了。

比如我們這麼寫:

 

  1 (function () {

 2     var cloneObject = function (obj) {
 3         var result = {};
 4         for (name in obj) {
 5             result[name] = obj[name];
 6         }
 7         return result;
 8     };
 9     var defaultConfig = {
10         cache: false,
11         contentType: 'text/html'
12     };
13     window.$ = {};
14     $.ajax = function (config) {
15         var ajaxConfig = config(cloneObject(defaultConfig));
16     };
17 
18     $.ajax(function (config) {
19         config.cache = false;
20     });
21 })();

 

 那麼就可以這麼調用的時候, 如果不知道config裡面怎麼寫?

那太好辦了。 你把斷點設在調用的地方, 看下config裡面是什麼樣子的就可以了。

 

而那些預設的config, 我們不用, 也會存在。 是不是會有什麼效能消耗, 產生效能問題呢?

我知道一些完美主義者一定會這麼問的。

實際上答案是這樣的:

 

1 即使是正在使用的方案,就是config裡面只有幾項的, 你提供的config, 也許扔進去, 也是和一個預設的進行merge, 然後再用的。如果是這樣, 那麼效能相同。甚至節約了一個merge。

2 你的config會有成千上萬的配置項嗎?如果是的話, 那麼確實會產生效能問題, 不過相信我, 你首先面臨的將是設計問題, 效能問題反倒是其次的。 

3 這屬於可控制的效能問題,  即使慢了, 最佳化起來也是最簡單的。 比如用一個共用的config, 在set裡面做文章。 set的時候只是攔截下記錄, 而共用的config對象,值不變。

何況這隻是胡思亂想, 提供個思路而已。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.