Array.prototype.slice.call - ну у меня в коде данной реализации нет, так что не знаю о чем ты меня спрашиваешь сейчас
Напиши сначала самый простой вариант что нужно, без всех этих вложенностей, на es6, допустим. Потом, когда всё будет работать можно уже вручную заменять на что-то старое уже.
Ну сначала надо понять что сделать. Почему при клике нужно атрибуты помещать именно в датасет кнопки? Что дальше с этими данными будет происходить? Может вообще по другому лучше это реализовать.