> For the complete documentation index, see [llms.txt](https://modelico.javiercejudo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://modelico.javiercejudo.com/recipes/es5.md).

# ES5 classes

To support legacy browsers without transpiling, Modélico can be used with ES5-style classes. In the case of the `Animal` class from the [introductory example](https://github.com/javiercejudo/modelico/tree/c356c97466264d859bea3d0ad8f9542f3bfd0894/docs/introduction/README.md):

```javascript
(function (M) {
  var m = M.metadata()

  function Animal (fields) {
    M.Base.factory(Animal, fields, this)
  }

  Animal.prototype = Object.create(M.Base.prototype)
  Animal.prototype.constructor = Animal

  Animal.prototype.speak = function () {
    var name = this.name()

    return (name === '')
      ? "I don't have a name"
      : 'My name is ' + name + '!'
  }

  Animal.innerTypes = function () {
    return Object.freeze({
      name: m.string()
    })
  }
}(window.Modelico))
```
