2011-04-01 10 views
42

Estaba buscando http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options para crear un plugin simple para jQuery. Siguiendo la sección sobre opciones y configuraciones, hice lo siguiente, que no funcionó (el script se detuvo cuando encontró la configuración).¿Se permiten guiones en los nombres de las propiedades de JavaScript?

var settings = { 
    'location' : 'top', 
    'background-color': 'blue' 
} 
... 
$this.css('backgroundColor', settings.background-color); // fails here 

Una vez que eliminé el guión del color de fondo, todo funciona correctamente.

var settings = { 
    'location' : 'top', 
    'backgroundColor': 'blue' // dash removed here 
} 
... 
$this.css('backgroundColor', settings.backgroundColor); 

¿Me falta algo, o los documentos de jQuery están equivocados?

+0

Tenga en cuenta que está intentando utilizar 'background-color' como un elemento de acceso de propiedad, no como una variable. Las variables solo pueden ser identificadores, el acceso a la propiedad son menos estrictos y pueden ser IdentifierNames (las palabras reservadas no están excluidas). Pero en este caso, 'background-color' no es ni Identifier ni IdentifierName. – Oriol

Respuesta

83

no. el analizador lo interpretará como el operador de resta.

puedes hacer settings['background-color'].

+1

Ya veo. Gracias, esto es lo que debería haber usado. $ this.css ('backgroundColor', opciones ['background-color']); – xecaps12

+5

Tengo que aceptar esta respuesta porque es correcta e incluye una broma ingeniosa en los comentarios. – xecaps12

+0

¡Muy apreciado por esto @dan! –

13

Cambie settings.background-color por settings['background-color'].

Las variables no pueden contener - porque se lee como el operador de resta.

+0

+1 por porque .. –

3

Puede tener guiones en cadenas. Si realmente quería mantener ese guión, habría que referirse al establecimiento a través de los soportes y otras cosas:

$this.css('backgroundColor', settings['background-color']); 
8

Los guiones no son legales en las variables JavaScript. Un nombre de variable debe comenzar con una letra, un signo de dólar o un guión bajo y puede ir seguido del mismo o de un número.

+0

Pero esto no es una variable. –

Cuestiones relacionadas