簡體   English   中英

Crockford的實體化方法 - 為什么關閉?

[英]Crockford's entityify method -why the closure?

在Crockford的JavaScript:The Good Parts的第90頁,他的代碼有以下內容:

String.method('entityify', function(){

  var character = {
    '<': '&lt;',
    '>': '&gt;',
    '&': '&amp;',
    '"': '&quot;'
  };

  return function(){
    return this.replace(/[<>&"]/g, function(c){
      return character[c];
    });
  };
}());

console.log("<&>".entityify());

是否有充分的理由關閉並立即調用外部函數? 以下似乎也適用:

String.method('entityify', function(){

  var character = {
    '<': '&lt;',
    '>': '&gt;',
    '&': '&amp;',
    '"': '&quot;'
  };

  return this.replace(/[<>&"]/g, function(c){
    return character[c];
  });
});

通過這樣做,他創建了一次 character對象並重復使用它。 通過編輯,您每次都可以重新創建它。 你可以用任何一種方式來論證,但這就是區別。 他的使用略高於內存。 你需要每次通話分數長(也許,取決於是否創建該對象不是額外的范圍遍歷步驟的他已經花費更長的時間,它可能確實,雖然)。 在任何情況下,它都不可能是你在現實世界中注意到的任何東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM