add day 1

This commit is contained in:
Zoe
2022-09-23 22:33:36 -05:00
commit 1c5d2a2e7e
322 changed files with 237131 additions and 0 deletions

44
day1/script.js Normal file
View File

@@ -0,0 +1,44 @@
function getTrackableObject(obj, callback) {
if (obj[Symbol.for('isTracked')]) return obj;
const tracked = Array.isArray(obj) ? [] : {};
for (const key in obj) {
Object.defineProperty(tracked, key, {
configurable: true,
enumerable: true,
get() {
return obj[key];
},
set(value) {
if (typeof value === 'object') {
value = getTrackableObject(value);
}
obj[key] = value;
callback(obj);
console.log(`'${key}' has changed. ` + obj[key]);
},
});
}
// marked as 'tracked'
Object.defineProperty(tracked, Symbol.for('isTracked'), {
configurable: false,
enumerable: false,
value: true,
});
return tracked;
}
const countElm = document.getElementById('count')
countElm.textContent = 0
// track app state
const appState = getTrackableObject({ count: 0 }, (obj) => countElm.textContent = obj.count);
// appState.count = appState.count + 1; // log `'foo' has changed.`
document.getElementById('btn-subtract').addEventListener('click', () => {
appState.count--;
})
document.getElementById('btn-reset').addEventListener('click', () => {
appState.count = 0;
})
document.getElementById('btn-add').addEventListener('click', () => {
appState.count++;
})