Llamar a una variable almacenada en un object de notación literal

Tengo este object de notación literal (eliminé las partes irrelevantes):

var work = { "display": function displayWork(){ for(i in work.jobs){ $('#workExperience').append(HTMLworkStart); var formattedEmployer = HTMLworkEmployer.replace('%data%', work.jobs[i].employer); var formattedTitle = HTMLworkTitle.replace('%data%', work.jobs[i].title); var formattedEmployerTitle = formattedEmployer + formattedTitle; var formattedWorkDates = HTMLworkDates.replace('%data%', work.jobs[i].dates); var formattedWorkLocation = HTMLworkLocation.replace('%data%', work.jobs[i].location); var formattedWorkDescription = HTMLworkDescription.replace('%data%', work.jobs[i].description); $('.work-entry:last').append(formattedEmployerTitle); $('.work-entry:last').append(formattedWorkDates); $('.work-entry:last').append(formattedWorkLocation); $('.work-entry:last').append(formattedWorkDescription); } } }; 

He intentado llamarlo con:

 work.display.displayWork(); displayWork(); $(work.display).displayWork(); 

Ninguno de estos ha funcionado. ¿Cómo hago para llamar a esta function?

Si coloco la function fuera del object de notación literal, no puedo llamarlo bien con:

 displayWork(); 

3 Solutions collect form web for “Llamar a una variable almacenada en un object de notación literal”

Me gusta esto:

 work.display(); 

La propiedad de display del object de work refiere a la function.

Debido a que su function ha sido creada con una expresión de function, el nombre displayWork solo se puede utilizar desde dentro de la function, por lo que si la function no necesita llamarse a sí misma (recursivamente) puede optar por omitir este nombre y simplemente display : function() { ... } .

La forma correcta es la siguiente:

 work.display(); 

dado que la display es una propiedad del object, podríamos usar la notación de puntos para acceder a ella y el () para evaluar la function a la que apunta.

La forma correcta es:
work.display();

Pero el object HTMLworkStart podría faltar si no está en el scope global. Entonces deberías establecerlo como argumento:

  var work = { "display": function (HTMLworkStart){ ... } 

Entonces tienes que llamar
work.display(HTMLworkStart);

  • Cómo mostrar milisegundos en el timer de count regresiva javascript
  • Pasar las matrices a un jQuery PlugIn
  • Función de llamada en clic div
  • Eliminar matriz del object javascript
  • event.preventDefault () solo funciona una vez
  • Eliminar padre pero mantener a los niños usando jQuery
  • Cómo get el valor de la input cuando Autocompleted por Chrome
  • events de keyup y keydown, si el usuario está escribiendo demasiado rápido
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.