Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как можно красиво сократить такой метод? (https://javascript.ru/forum/offtopic/38364-kak-mozhno-krasivo-sokratit-takojj-metod.html)

Maxmaxmaximus.js 29.05.2013 16:49

Как можно красиво сократить такой метод?
 
Observer.prototype.changed = function() {

  var observers = this.observers;
  var clone = this.clone;
  var target = this.target;

  if (Object.keys(target).length !== Object.keys(clone).length) {
    this.rememberState();
    return true;
  }

  for (var key in target)  if (target[key] !== clone[key]) {
    this.rememberState();
    return true;
  }

  for (key in observers)  if (observers[key].changed()) return true;

  this.rememberState();
  return false;
};

Maxmaxmaximus.js 29.05.2013 17:04

В принципе можно сделать вот так, но зачем.....

Observer.prototype.changed = function() {
  var observers = this.observers;
  var clone = this.clone;
  var target = this.target;

  if (Object.keys(target).length !== Object.keys(clone).length) this._return(true);
  for (var key in target)  if (target[key] !== clone[key]) this._return(true);
  for (key in observers)  if (observers[key].changed()) return true;
  return this._return(false)
};

Observer.prototype._return = function(value) {
  this.rememberState();
  return value;
};

kobezzza 29.05.2013 18:56

for (var key in target)  if (target[key] !== clone[key]) this._return(true);

Это какой то ад, не пиши так :)

Maxmaxmaximus.js 29.05.2013 19:19

Цитата:

Сообщение от kobezzza
Это какой то ад, не пиши так

конечно, но а как сократить то?

точнее даже так, ЕСТЬ ли какой-то способ красиво написать тот метод избегая повторений?


Часовой пояс GMT +3, время: 21:18.