Пользовательский геттер / сеттер Sproutcore - PullRequest
0 голосов
/ 25 марта 2011

В 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'будет новое значение

1 Ответ

2 голосов
/ 26 марта 2011

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

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

  return this._bar;
}

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

...