Показать сообщение отдельно
  #14 (permalink)  
Старый 09.06.2017, 22:47
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Tranquill Посмотреть сообщение
Уже думал о таком варианте, но тут плохо то, что нет локальности.
То есть функция в одном месте объявляется, а помечается где-то в другом.
Такое трудно поддерживать будет. Может как-то по-другому можно?
var obj = { 
  f1: function() { return 1; }, 
  f2: (function(f) { f[Symbol.for("My Favorite Function")] = true; return f; })(function() { return 2; }),
  g1: function() { return 3; },
  h1: 'not a function'   
};

for (var key in obj) { 
  if (    obj.hasOwnProperty(key)
       && typeof(obj[key]) == 'function' 
       && Symbol.for("My Favorite Function") in obj[key]
      ) {
    console.log('Special function found: %s', obj[key]);
  }
}
Ответить с цитированием