<commit_before>---
title: Lazy JS method evaluation
published: false
tags: javascript
---

El otro día, mirando contra mi voluntad el código de [CKEditor](https://github.com/ckeditor/ckeditor-dev), me encontré con un patrón para evaluación lazy de los métodos de un objeto JS bastante canchero (y probablemente conocido).

READMORE
Por ejemplo, digamos que un método de un objeto tiene una parte excesivamente costosa, representada convenientemente por una función llamada `doSomethingExpensive`.

```js
  function doSomethingExpensive() {
    console.log('expensive!');
    return 42;
  }

  function doSomethingCheap(answer) {
    return answer + 1;
  }

  function objeto() {}

  objeto.prototype.metodo = function() {
    var expensive = doSomethingExpensive();
    doSomethingCheap(expensive);<commit_msg>Removed draft<commit_after>---
title: Lazy JS method evaluation
tags: javascript
---

El otro día, mirando contra mi voluntad el código de [CKEditor](https://github.com/ckeditor/ckeditor-dev), me encontré con un patrón para evaluación lazy de los métodos de un objeto JS bastante canchero (y probablemente conocido).

READMORE
Por ejemplo, digamos que un método de un objeto tiene una parte excesivamente costosa, representada convenientemente por una función llamada `doSomethingExpensive`.

```js
  function doSomethingExpensive() {
    console.log('expensive!');
    return 42;
  }

  function doSomethingCheap(answer) {
    return answer + 1;
  }

  function objeto() {}

  objeto.prototype.metodo = function() {
    var expensive = doSomethingExpensive();
    doSomethingCheap(expensive);
{'fraction_non_alphanumeric': 0.08796007485963818, 'fraction_numerical': 0.0037429819089207735, 'mean_word_length': 4.493150684931507, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2886296', 'n_tokens_mistral': 485, 'n_tokens_neox': 458, 'n_words': 162}