Affecter dynamicment des propriétés à un object JS

J’avais besoin d’append dynamicment des propriétés à un object js, ce que j’ai réalisé via eval ():

$ -> #Methods window.add_address = (atsortingbutes, id=new Date().getTime())-> $container = $('ul#addresses_list') $unit = $('
  • ') $.each atsortingbutes, (key,value)-> $input = $('') $input.attr 'name', "contact[addresses_atsortingbutes][#{id}][#{key}]" $input.val value $unit.append $input $container.append $unit #Events #Add address button $('a#add_address').on 'click', (ev)-> atsortingbutes = new Object $('#address_fields').find('input').each -> eval("atsortingbutes.#{$(this).attr 'id'}='#{$(this).val()}'"); add_address atsortingbutes
  • Cela fonctionne parfaitement mais je me sens mal à l’aise avec eval() , est-il possible de faire cela “plus joli”? Je veux dire, j’ai cherché des alternatives telles que Jquery .serializeArray () mais cela ne semble fonctionner qu’avec un formulaire interrogé et j’ai besoin d’obtenir les entrées de cette div #address_fields .

    Utiliser la notation object['key']

     atsortingbutes[$(this).attr('id')] = $(this).val(); 

    C’est aussi très efficace de créer un object en utilisant:

     var atsortingbutes={}; 

    EDIT: Le long des lignes similaires peuvent écrire les méthodes jquery dans la même notation

      atsortingbutes[$(this)['attr']('id')] = $(this)['val']();