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"));