Object.freeze: Immutable Objects
One of my favorite part of JavaScript has always been mutability of objects. I loved that MooTools and likewise frameworks could modify native prototypes to enhance them with functionality we knew the language need; in fact, I credit MooTools with pushing the web forward.
There are cases, however, where you don't want an object to be modifiable; you don't want values for existing properties to be changed, added, or removed. That's where Object.freeze
can help -- with Object.freeze
you can create immutable objects you can trust!
const obj = Object.freeze({
x: 1,
y: 2
});
// None of these do anything
obj.x = 8; // { x: 1, y: 2}
delete obj.x; // { x: 1, y: 2}
obj.z = 3; // { x: 1, y: 2}
Object.freeze
is a welcomed addition to JavaScript and a necessary one. If you have objects whose integrity you want to secure, immutability is required. Object.seal
provides similar functionality without the ability to freeze values, so Object.freeze
is your best choice when you want to lock down an object!
While synchronous code is easier to follow and debug, async is generally better for performance and flexibility. Why "hold up the show" when you can trigger numerous requests at once and then handle them when each is ready? Promises are becoming a big part of the JavaScript world...
Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today's websites and devices become ever more varied, a plethora of responsive images...
One of the famous MooTools plugins is Harald Kirschner's AutoCompleter plugin. AutoCompleter takes a term input by the user and searches for matches -- an obviously help to the user. Here's how to make the most of Harald's great plugin.
The XHTML
All we...
You've probably been to sites like RapidShare and MegaUpload that allow you to download files but make you wait a specified number of seconds before giving you the download link. I've created a similar script but my script allows you to animate the CSS font-size...
It’s good to remind that
Object.freeze
does only shallow freeze.That’s a nice feature. Much needed. However, I hope the browser support is good.
Should I remind that MooTools’ practice to extend native prototypes prevented W3C to use well-known names like
contains
andflatten
, because it would have literally broken the web?Extending native prototypes is the last thing you’d want in a general purpose library.