JSFiddle - React, Tailwind, and code Playground
JavaScript
// named setter on proto chain, no overridebuiltins
var foo = Object.create(sessionStorage);
foo.x = "a";
alert("One: " + foo.x);
alert("Two: " + sessionStorage.x);
// named setter on object, no overridebuiltins
sessionStorage.getItem = "b";
alert("Three: " + sessionStorage.getItem);
alert("Four: " + Storage.prototype.getItem.call(sessionStorage, "getItem"));
// named setter on proto chain, overidebuiltins
var bar = Object.create(document.documentElement.dataset);
bar.x = "c";
alert("Five: " + bar.x);
alert("Six: " + document.documentElement.dataset.x);
// named setter on object, overridebuiltins
Object.prototype.z = "d";
document.documentElement.dataset.z = "e";
alert("Seven: " + document.documentElement.dataset.z);
alert("Eight: " + document.documentElement.getAttribute("data-z"));