Trying to get the following code to work; As the store variable is assigned an anonymous object, the "data" property is populated using a function call. This setting should also set the contents of the other object's property "masterData". I expected the "this" keyword to refer to the anonymous object being created, but I'm wrong...
    var store = {
        masterData : [],
        revert: function() {
            this.data = shallowCopy(this.masterData);
        },
        data: (function() {
            var overviewData = getOverviewData();
            this.masterData = overviewData;
            return chartData;
            }).call(),
    };
See also that "revert" property; It's given a function that'll create a copy of the object's data property contents.
What should be used, since "this" returns the DOMWindow object?
The data function is being called before the object is defined; this will not be an alias to an object prior to that object's coming into existence. You can use a constructor function with a private, short-lived variable:
var getOverviewData = function () { return "I'm overview data!" }
var chartData = "I'm chart data!"
var store = new function () {
  var _masterData
  this.revert = function() {
    this.data = shallowCopy(this.masterData)
  }
  this.data = (function() {
    _masterData = getOverviewData()
    return chartData
  }).call()
  this.masterData = _masterData
}()
console.log(store)
// { revert: [Function],
//   data: 'I\'m chart data!',
//   masterData: 'I\'m overview data!' }
                        i have the same problem and i solved it by just sending the scope with the function.
    var self = this;
    setInterval( yourFunction(self), 1000);
    yourFunction:function( self )
    {
        console.log(this);
        console.log(self);
    }
you see when it logs "this" it refers to the DOM and the self is refering to where ever you came from. i hope this helps! :)
EDIT: instead of inside Data to set the masterData, set the Master data after the Data is created.
var store = {
    masterData : [],
    revert: function() {
        this.data = shallowCopy(this.masterData);     //Here is where you create data
        masterData = this.data.overviewData;       //set the masterData
    },
    data: (function() {
        var overviewData = getOverviewData();
        return chartData;
        }).call(),
};
i think this should work, otherwise sorry :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With