2012-06-12 20 views
10

¿Para qué se define Internal Property en ECMAScript? ¿Qué significa la especificación por¿Para qué propiedad interna se define ECMAScript?

Esta especificación utiliza varias propiedades internas para definir los semántica de las propiedades del objeto values.These interna no son parte de el lenguaje ECMAScript. Están definidos por esta especificación puramente con fines expositivos.

Significa que Las propiedades internas definidas por ECMAScript no están disponibles para la programación. Se usan en la implementación del motor de JavaScript?

Respuesta

0

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

4

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

Sí. Solo son para fines de implementación, y no necesitan "nombres reales". Puede leer sobre eso en #8.6.2 Object Internal Properties and Methods.

1

El ejemplo más utilizado es la propiedad interna [[prototipo]], todos los objetos tienen uno pero no se puede acceder 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 

para que pueda acceder a los objetos que la propiedad interna [[Prototype]] está señalando a, pero no directamente a través de la propiedad interna [[Prototype]] que es sólo para el tiempo de ejecución de usar, no el programador.

6

Las propiedades internas definen el comportamiento del código a medida que se ejecuta pero no se puede acceder a través del código. ECMAScript define muchas propiedades internas para objetos en JavaScript. Las propiedades internas se indican mediante notación de doble corchete.

Por ejemplo, la función JavaScript es un objeto y tiene la propiedad [[call]]. La propiedad [[call]] es única para la función.

Otro ejemplo de propiedad interna es la propiedad [[prototype]]. Esta propiedad es un puntero que apunta al objeto prototipo que está usando la instancia. Como no se puede acceder a la propiedad interna a través del código, una instanciación de objetos no puede acceder al prototipo mientras 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); 
Cuestiones relacionadas