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 grep la matriz JSON contiene en javascript o jquery
  • ¿Cómo usar el motor de templates micro de JavaScript de John Resig?
  • JQuery - .val () devuelve el valor anterior
  • Genere una list en javascript y agréguela a div en html
  • Obtiene el valor de la casilla multiselect usando jQuery o JS puro
  • ¿Un problema serio con la security de jQuery y ActiveX?
  • cambiar el color del personaje cuando mouseover javascript
  • get todos los valores de elementos de formulario usando jquery?
  • networkingondear un número exponencialmente pequeño con .toFixed ()
  • ¿Cómo codificaría un Pixel de clic junto a un Pixel de printing (Rastreo)?
  • Carga Ajax con fundido en
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.