Это будет работать. Это функция, которая возвращает истину, ложь или, возможно, ноль.
const isObject = obj => obj && obj.constructor && obj.constructor === Object;
console.log(isObject({})); // true
console.log(isObject([])); // false
console.log(isObject(new Function)); // false
console.log(isObject(new Number(123))); // false
console.log(isObject(null)); // null
Нет, к сожалению, такого инструмента нет. Ближе всего к этому относятся различные инструменты профилирования (например, Venkman), которые могут показать вам время, потраченное на различные функции JS, но агрегирование этих данных для определения неэффективности расширения будет сложной задачей.
Mozilla также использует dtrace на Mac (со специальными сборки Firefox и специальные скрипты dtrace) для анализа производительности. Думаю, это тоже можно приспособить.