2012-07-30 40 views
6

Examiné una excepción de JavaScript en Google Chrome.¿Cuáles son estos métodos misteriosos de una excepción de JavaScript?

enter image description here

Y me di cuenta de las funciones get message, get stack, set message y set stack. Intenté capturar esta excepción y ejecutar alert(e.get_message()); solo para obtener un error. También intenté ejecutar alert(e.get message());, que obviamente devolvió otro error debido al espacio.

¿Qué son estos misteriosos métodos y cómo los llama un desarrollador?

+0

Tenga en cuenta que el acceso a la propiedad a través de '.' es simplemente azúcar sintáctica para la indexación a través de' [...] '. Entonces, de hecho, puede darle a un objeto un método con un espacio en su nombre; llamarlo se vería así: 'alerta (e ['obtener mensaje']());' –

Respuesta

7

Son accesadores de la propiedad. En realidad son funciones que se ejecutan cuando obtiene o establece la propiedad.

e.message; // getter 

e.message = "foobar"; // setter 

Al utilizar los elementos de acceso a la propiedad, estos hacen más que un simple obtener y establecer el valor de la propiedad. Pueden ejecutar el código que se estableció en los descriptores de propiedad del objeto, de modo que el acceso a la propiedad pueda tener efectos secundarios.

Ejemplo:

var o = Object.create(Object.prototype, { 
    foobar: { 
     get: function() { return "getter"; }, 
     set: function(val) { alert("setter " + val); } 
    } 
}); 

o.foobar; // "getter" 
o.foobar = "raboof"; // alerts "setter raboof" 

Para ver los descriptores de propiedades establecidas para una determinada propiedad, utilice Object.getOwnPropertyDescriptor ...

console.dir(Object.getOwnPropertyDescriptor(e, "message")); 

Object 
    configurable: true 
    enumerable: false 
    get: function getter() { [native code] } 
    set: function setter() { [native code] } 

Tenga en cuenta que estas técnicas requieren una ECMAScript 5 soportados implementación.

Cuestiones relacionadas