I was wondering if there is actually a difference between using an object literal as opposed to using a prototype or if it is really just preference? I only ask because as I read it sounds as if a literal is just a better way to represent Prototypal information since, according to JavaScript: The Good Pattern, Douglas Crockford "Objects...[have] a hidden link to a prototype object. And before I get downvoted I did see this topic has come up. I'm not sure if the standard has change with ECMA6 but the answer wasn't correct. I also ask because I don't know how the Sandbox pattern would work if this wasn't the case. Thanks for taking the read!
Running this basic script appears that literals (at least when using object.create()) act similar to prototypes with the ability to over-ride a function. Having an inherited function property change at run-time if the parent function changes, assuming the function has not been over-ridden. Also, if over-riding the parent object from the child object, it has no effect on the parent object.
var my_literal = {}, my_object_create;
my_literal.calc = (function (x, y) {
'use strict';
return x * y;
}(1, 3));
my_object_create = Object.create(my_literal);
console.log(my_object_create.calc);
console.log(my_literal.calc);
my_literal.calc = 'Over ride';
console.log(my_object_create.calc);
console.log(my_literal.calc);
my_object_create.calc = (function (x, y) {
'use strict';
return x * y;
}(2, 4));
console.log(my_literal.calc);
console.log(my_object_create.calc);