Очевидно, это работает так, как я привел свои примеры здесь. Не работает с одним дополнительным уровнем косвенности.
function print(x) {
console.log(x);
return x;
}
print(condition ? node.addClass : node.removeClass)('myclass');
С этим кодом Chrome сообщает мне:
Uncaught TypeError: Невозможно прочитать свойство '0' из неопределенного
Но я обнаружил, что могу обойти проблему, используя call
для передачи node
как this
функции.
print(condition ? node.addClass : node.removeClass).call(node,'myclass');
Очевидно, что правильным решением в данном конкретном случае является использование toggleClass
, как указывал @epascarello. Я немного удивлен, что this
теряется в этом сценарии.