1. function proxy (target, sourceKey, key) {
    2. sharedPropertyDefinition.get = function proxyGetter () {
    3. return this[sourceKey][key] // <==
    4. };
    5. sharedPropertyDefinition.set = function proxySetter (val) {
    6. this[sourceKey][key] = val;
    7. };
    8. Object.defineProperty(target, key, sharedPropertyDefinition);
    9. }
    1. /**
    2. * Define a reactive property on an Object.
    3. */
    4. function defineReactive$$1 (
    5. obj,
    6. key,
    7. val,
    8. customSetter,
    9. shallow
    10. ) {
    11. var dep = new Dep();
    12. var property = Object.getOwnPropertyDescriptor(obj, key);
    13. if (property && property.configurable === false) {
    14. return
    15. }
    16. // cater for pre-defined getter/setters
    17. var getter = property && property.get;
    18. var setter = property && property.set;
    19. if ((!getter || setter) && arguments.length === 2) {
    20. val = obj[key];
    21. }
    22. var childOb = !shallow && observe(val);
    23. Object.defineProperty(obj, key, {
    24. enumerable: true,
    25. configurable: true,
    26. get: function reactiveGetter () {
    27. var value = getter ? getter.call(obj) : val;
    28. if (Dep.target) {
    29. dep.depend();
    30. if (childOb) {
    31. childOb.dep.depend();
    32. if (Array.isArray(value)) {
    33. dependArray(value);
    34. }
    35. }
    36. }
    37. return value
    38. },
    39. set: function reactiveSetter (newVal) {
    40. var value = getter ? getter.call(obj) : val; // <==
    41. /* eslint-disable no-self-compare */
    42. if (newVal === value || (newVal !== newVal && value !== value)) {
    43. return
    44. }
    45. /* eslint-enable no-self-compare */
    46. if (process.env.NODE_ENV !== 'production' && customSetter) {
    47. customSetter();
    48. }
    49. // #7981: for accessor properties without setter
    50. if (getter && !setter) { return }
    51. if (setter) {
    52. setter.call(obj, newVal);
    53. } else {
    54. val = newVal;
    55. }
    56. childOb = !shallow && observe(newVal);
    57. dep.notify();
    58. }
    59. });
    60. }