JSFiddle - React, Tailwind, and code Playground

HTML

<body id="body">
</body>

JavaScript

function out(str) {
    document.getElementById('body').innerHTML += str + "<br>";
}

var SomeObj = function () {
  var obj = {
    _val: 0 
  }
  Object.defineProperty(obj, "val", {
        enumerable: true,
    	set : function(value) {
           out("Set: " + value);
           this._val = value;
    	},
    	get: function(){
        	return this._val;
    	}
  });
  return obj;
};

var sObj = new SomeObj();
sObj.val = 100;

var sCopy = angular.copy(sObj);
sCopy.val = 200;

var sExt = angular.extend({}, sObj);
sExt.val = 300;