JSFiddle - React, Tailwind, and code Playground
HTML
<div id="log"></div>
JavaScript
// working on 35.0.1916.153 m
// NOT working on 37.0.2062.94 m
var arr = [];
var CONST_SYSTEM_KEY = '___system_callback____';
var logElement = document.getElementById('log');
function log(text){
logElement.innerHTML += text + "<br>";
}
function watchKeyChanges(obj, key) {
if (Object.observe){
// hack for CHROME 37
// http://stackoverflow.com/questions/25565237/defineproperty-to-array-item-on-chrome-browser
var cl = function(changes){
for (var i = 0, l = changes.length; i < l; i++){
var item = changes[i];
if (item.name === key){
// console.log(key);
var params = {
val: item.object[item.name],
old: item.oldValue
};
handler(params);
}
}
}
Object.observe(obj, cl);
obj[CONST_SYSTEM_KEY] = cl;
} else {
var oldval = obj[key];
var newval = oldval;
function getter() {
return newval;
}
function setter(val) {
newval = val;
oldval = val;
}
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: getter,
set: setter
});
}
}
function unwatchKeyChanges(obj, key) {
if (Object.unobserve) {
var cl = obj[CONST_SYSTEM_KEY];
cl && Object.unobserve(obj, cl);
}
var val = obj[key];
delete obj[key]; // remove accessors
obj[key] = val;
}
function fillArray() {
for (var i = 0; i < 100; i++) {
var item = {
test: 'test'
};
if (arr[i]) {
log('element "' + i + '" is exist! but it not must!');
...