2015-08-26 2 views
0
sap.designstudio.sdk.DataBuffer.subclass("com.sap.sample.jsondatasource.JsonDataSource", function() { 

    var that = this; 

    var _hasHeaderRow = false; 
    var _hasHeaderColumn = false; 
    var _csvfile; 

    this.init = function() { 
     this.defineDimensions([{ 
      key: "cols", 
      text: "City", 
      "axis": "COLUMNS", 
      "axis_index": 0 
     }, { 
      key: "rows", 
      text: "Date", 
      "axis": "ROWS", 
      "axis_index": 0 
     }], { 
      key: "measures", 
      text: "Measures", 
      containsMeasures: true, 
      members: [{ 
       "key": "measure", 
       "text": "Temprature", 
       "scalingFactor": 2, 
       "formatString": "0.00 EUR;-0.00 EUR" 
      }] 
     }); 
    }; 

    this.csvfile = function(value) { 
     if (value === undefined) { 
      return _csvfile; 
     } else { 
      _csvfile = value; 
      return this; **//why we using this here?** 
     } 
    }; 

    this.hasHeaderRow = function(value) { 
     if (value === undefined) { 
      return _hasHeaderRow; 
     } else { 
      _hasHeaderRow = value; 
      return this; **//why we using this here?** 
     } 
    }; 

    this.hasHeaderColumn = function(value) { 
     if (value === undefined) { 
      return _hasHeaderColumn; 
     } else { 
      _hasHeaderColumn = value; 
      return this; **//why we using this here?** 
     } 
    }; 



    this.afterUpdate = function() { 
     // 
    } 
}); 

У меня есть сомнения в отношении этого геттера и сеттера. почему мы используем это здесь? в чем же цель, мы можем вернуть значение правильно? Пожалуйста, объясните кому-нибудь. Я обновил весь код. Любое предложение сейчас?Почему мы возвращаем это в функцию getter и setter?

+1

показать нам контекст и пример, который использует это в коде и что он пытается достичь. –

+1

Вопрос выглядит довольно понятным для меня. – MinusFour

+0

Он ссылается на экземпляр объекта, на который в данный момент вызывается метод. подробнее http://stackoverflow.com/questions/8300844/what-does-return-this-do-within-a-javascript-function –

ответ

2

Это пример «fluent interface».

Что это? Например, если у вас есть объект из foo класса и каждый метод этого класса возвращает экземпляр foo, вы могли бы написать

fooInst.do().some().thing() 

Кстати, многие из методов JQuery реализованы для использования в качестве беглого интерфейса , поэтому это довольно знакомая концепция для разработчиков JS.

В примере кода большинство методов возвращают экземпляр только в том случае, если значение передано. В этом случае метод может использоваться либо как сеттер, либо как геттер.

Это также похоже на то, что JQuery делает с несколькими способами, например:

var foo = $('#elem').attr('class'); // returns element's class, CANNOT be chained 
$('#elem').attr('class', 'foo'); // sets class + returns instance, CAN be chained