Пользовательский геттер/сеттер Sproutcore

В Sproutcore я использую универсальный метод установки/получения, например:

foo.set('bar', newValue );
val = foo.get('bar');

Это сильно отличается от Objective-c, как мне написать собственный геттер/сеттер?

РЕДАКТИРОВАТЬ

Спасибо тем, кто помог, способ сделать это

bar: function( propKey, propVal ) {
  if(propVal===undefined) {   // called as getter method
    var computedBarValue = ...
    return computedBarValue;
  } else {
    this.bar = propVal + ...    // called as setter method
  }
}.property()

Как видите, у вас есть один метод, который является и геттером, и сеттером.

если ты позвонишь

val = foo.get('bar');

аргумент метода 'propVal' будет неопределенным.

если ты позвонишь

foo.set('bar', newValue );

аргумент метода 'propVal' будет newValue


person hooleyhoop    schedule 25.03.2011    source источник


Ответы (1)


Пользовательская функция установки/получения будет выглядеть примерно так:

bar: function(key, value){
  if(value != undefined){
    this._bar = value;
  }

  return this._bar;
}

Это просто получит/установит значение. Чтобы сделать что-то на наборе, просто добавьте то, что вы хотите, после этого._bar = значение, чтобы сделать что-то на получении, просто добавьте, если значение == undefined.

person Mantas    schedule 26.03.2011
comment
Привет, спасибо за ответ - это в значительной степени то, что я думаю, не сработает ... но я попытаюсь провести некоторые тесты и, возможно, расширить вопрос, добавив некоторые подробности. - person hooleyhoop; 26.03.2011
comment
Демо ToDos, описанное на странице guides.sproutcore.com/html_based.html, включает этот шаблон установки/получения. для функции allAreDone - person Paul Beusterien; 30.03.2011