Por que elementos personalizados não suportam atributos como um objeto?

Eu estou tentando passar o atributo de dados no elemento personalizado como um objeto, mas durante o recebimento do método attachedCallback, obtendo o valor "[objeto do objeto]" em um formato de string.

Alguém pode me ajudar a descobrir qual é a solução alternativa para obter os atributos como um objeto dentro do elemento personalizado (componente da web).

amostra de código

<script>
class myElements extends HTMLElement {
    createdCallback() {
        this.innerHTML = `<h1>Hello</h1>`;
    }
    attachedCallback() {
        console.log(this.getAttribute('data'));
    }
}

 document.registerElement('my-element', myElements);
</script>

tag de elemento personalizado

<script>
    var object = { key1: 111, key2: 222, key3: function(){return "hi"}, key4:[1,2,3]};

   function changeHandler() {
    page('/default', function() {
        // some logic to decide which route to redirect to
        if (admin) {
            page.redirect('/admin');
        } else {
            page.redirect('/guest');
        }
    });
}

</script>

<my-element data="object" onchange="changeHandler"></my-element>

Nota: suponha que<my-element> é um menu suspenso que oferece ao usuário a opção de escolher algum valor.

Solução: ainda não há solução nativa nas especificações de elementos personalizados (v0 ev1)

Como o Custom Elements não suporta ligação de dados, precisamos de uma camada de adição de açúcar (por exemplo, Polymer ou SkateJS), como mencionado por @tony no comentário.

questionAnswers(2)

yourAnswerToTheQuestion