2011-08-03 12 views
6

he intentado este código¿cuál es el typeof (jQuery)

console.log(typeof(jQuery))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>

Alerta function, lo que significa que el typeof jQuery es function.

Mi pregunta es, ¿cuál es el tipo exacto de jQuery? Si es función, ¿cómo es que tiene propiedades como jQuery.browser y jQuery.ajax?

+0

Creo que todos los objetos de JavaScript son funciones. Javascripts OO es un poco extraño hasta que te acostumbras. –

+0

Porque los objetos son funciones y las funciones son objetos en Javascript. – deceze

+1

Cerrar, @Matthew, todas las funciones son objetos, no al revés. –

Respuesta

6

El operador typeof cuando se aplica al objeto jQuery devuelve la cadena "function". Básicamente eso significa que jQuery es una función.

Pero el tipo de tipeo se detiene allí. A diferencia de los lenguajes estáticos, el número, el orden, los modos y los tipos de parámetros no se tienen en cuenta al calcular el tipo de una función. En JavaScript, es solo una "función".

Cuando se crea una función en JavaScript, el objeto de la función se crea se da dos propiedades, length y prototype, y su prototipo se ajusta a Function.prototype propiedades por lo que ha heredado como apply y call.

Y como otros ya han respondido, puede agregar sus propias propiedades. una función es solo un objeto.

Pero ten cuidado con "tipo". Técnicamente solo hay SIX tipos en JavaScript: nulo, indefinido, booleano, número, cadena y objeto. Entonces, la verdadera respuesta a su pregunta, ¿cuál es el tipo exacto de jQuery es ... en realidad ... drumroll .... Objeto.

+0

Si jQuery es en realidad un objeto, que es un subconjunto de función, y el objeto es un tipo válido, ¿por qué 'typeof jQuery;' no devuelve "object"? – Luke

+0

Porque a JavaScript no le importan las jerarquías de tipos.No hay noción de objetos tipo, ni supertipos o subtipos. El operador 'typeof' devuelve un _string_, no un _type_. Los tipos son cosas definidas en la referencia del lenguaje; en realidad no los maneja mucho en código, solo obtiene una cadena del operador 'typeof'. [Aquí está la descripción del operador] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof). Puedes ver que no fue pensado para tener mucho sentido. Simplemente hace lo que hace. –

3

Sólo trate de hacerlo usted mismo y comprenderá:

function f() { 
} 

f.prop = '123'; 

alert(f.prop); 

jQuery es una function pero, por supuesto, también es objeto, que contiene las funciones propias, como call() y puede tener propiedades, así .

Cuestiones relacionadas