1. let obj = {
    2. key_1: 1,
    3. key_2: 2
    4. }
    5. function func(key) {
    6. console.log(key + ' 的值发生改变:' + this[key]);
    7. }
    8. const bindData = (obj, func) => {
    9. Object.keys(obj).forEach(key => {
    10. let val = obj[key];
    11. Object.defineProperty(obj, key, {
    12. get() {
    13. return val;
    14. },
    15. set(newVal) {
    16. val = newVal;
    17. func.bind(obj)(key);
    18. }
    19. })
    20. })
    21. }
    22. bindData(obj, func);
    23. obj.key_1 = 2; // 此时自动输出 "key_1 的值发生改变:2"
    24. obj.key_2 = 1; // 此时自动输出 "key_2 的值发生改变:1"