ES5 defineProperty hotness
one day, only browsers that support this will be around.
by Steven Senkus
JavaScript
"use strict";
var jQ = {};
var expected;
/* Can't overwrite the src property! */
Object.defineProperty( jQ, "cdn", {
value: "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js",
writable: false,
enumerable: true,
configurable: true
});
// TypeError in Strict mode
expected = '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';
try {
// can't write this!
jQ.cdn = expected;
alert(expected);
}
catch (e) {
handleTypeError(e, expected);
}
function handleTypeError(e, exp) {
alert(e.name + '\n' + e.message + "\n" + e.stack + '\n' + 'Expected: ' + exp );
}