¿Para qué se define la propiedad interna en ECMAScript?

Que Propiedad Interna en ECMAScript está definido para ? ¿Qué significa la especificación?

Esta especificación utiliza varias propiedades internas para definir la semántica de los valores de los objetos. Estas propiedades internas no forman parte del lenguaje ECMAScript. Están definidos por esta especificación puramente con fines expositivos.

¿Significa eso? Las propiedades internas definidas por ECMAScript no están disponibles para la programación. Se utilizan en la implementación del motor javascript. ?

preguntado el 12 de junio de 12 a las 19:06

4 Respuestas

Las propiedades internas definen el comportamiento del código a medida que se ejecuta, pero no son accesibles a través del código. ECMAScript define muchas propiedades internas para objetos en JavaScript. Las propiedades internas se indican mediante notación de corchetes dobles.

Por ejemplo, la función de JavaScript es un objeto y tiene la propiedad [[call]]. La propiedad [[call]] es exclusiva de la función.

Otro ejemplo de propiedad interna es la propiedad [[prototype]]. Esta propiedad es un puntero que apunta al objeto prototipo que está utilizando la instancia. Dado que no se puede acceder a la propiedad interna a través del código, una instanciación de objeto no puede acceder al prototipo mientras todas sus propiedades estén disponibles para el objeto. Puede obtener el valor de la propiedad [[prototype]] utilizando el método Object.getPrototypeOf() en un objeto.

var obj = new Object();
var prototype = Object.getPrototypeOf(obj);
console.log(prototype == Object.prototype);

Respondido 15 Oct 14, 14:10

¿Significa que las propiedades internas definidas por ECMAScript no están disponibles para la programación? ¿Se utilizan en la implementación del motor javascript?

Si. Son solo para fines de implementación y no necesitan "nombres reales". Puedes leer sobre eso en #8.6.2 Propiedades y métodos internos del objeto.

Respondido el 12 de junio de 12 a las 20:06

El ejemplo de uso frecuente es la propiedad interna [[prototipo]], todos los objetos tienen uno, pero no se puede acceder a él directamente, por ejemplo.

function foo(){
    this.first = "hi"
    this.second = something
}
foo.prototype = {
    constructor : foo,
    anotherProp : "hello"
}

var obj = new foo();

console.log(obj.anotherProp); //hello
//here the runtime will look in obj for anotherProp and
//fail to find it so it will look in obj's internal property
//[[prototype]] which is pointing to the object foo.prototype

por lo que puede acceder a los objetos a los que apunta la propiedad interna [[prototype]], pero no directamente a través de la propiedad interna [[prototype]] que es solo para que la use el tiempo de ejecución, no el programador.

Respondido el 12 de junio de 12 a las 20:06

Se utilizan en un ejemplo de cómo implementar un motor JavaScript.

Respondido el 12 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.