Seleccionar página

Referencia de ECMAScript 5.1 – Objeto Object

Índice

Object() | Object.prototype | Object.create() | Object.defineProperties() | Object.defineProperty() | Object.freeze() | Object.getOwnPropertyDescriptor() | Object.getOwnPropertyNames() | Object.getPrototypeOf() | Object.isExtensible() | Object.isFrozen() | Object.isSealed() | Object.keys() | Object.preventExtensions() | Object.seal() | obj.constructor | obj.hasOwnProperty() | obj.isPrototypeOf() | obj.propertyIsEnumerable() | obj.toLocaleString() | obj.toString() | obj.valueOf()


Object()

Función constructora de los objetos de tipo Object

Sintaxis

var objeto = new Object([valor])

[valor]

Opcional. Puede ser cualquiera de los tipos de datos primitivos de Javascript (Number, Boolean o String). Si el valor es un objeto, se devolverá el objeto sin modificar.

Si el valor es null, undefined o no se proporciona, se creará un objeto de tipo Object.

var objeto = Object([valor])

La función constructora Object() puede ser invocada como una función devolviendo un objeto tipo Object de forma similar a los creados con new Object().

var objeto = {[[clave: valor], clave: valor]}

Los objetos de tipo Object también se pueden crear utilizando un literal formato por dos llaves {} conteniendo los miembros de ese objeto.

Ejemplo

// objeto tipo Object
var objeto = new Object();

// objeto tipo Number
var numero = new Object(100);

La función Object dispone de una serie de métodos y propiedades que pueden ser utilizados sin necesidad de crear un objeto con new. Estas propiedades y métodos se utilizan de la siguiente forma:

Object.getPrototypeOf(object)

Las instancias de los objetos del tipo Object disponen de las propiedades y métodos definidos en Object.prototype.

ECMA-262

Object.prototype

Prototipo de los objetos del tipo Object.

Sintaxis

Object.prototype

El prototipo incluye todas las propiedades y métodos que heredarán los objetos del tipo Object.

Si al objeto prototype se le añade o modifican propiedades o métodos, todos los objetos creados a partir del tipo Object tendrán estos nuevos miembros, incluso los creados con anterioridad a la modificación del prototipo.

ECMA-262

Object.create()

Crea un objeto con el prototipo especificado y que contiene, opcionalmente, las propiedades especificadas.

Sintaxis

Object.create(prototipo, [descriptores])

prototipo

Objeto prototipo que se usará para crear el objeto. Puede ser null y se creará un objeto completamente vacío.

[descriptores]

Objeto de JavaScript que contiene uno o varios descriptores de propiedad.

Un descriptores de propiedad es un objeto con las características que deseamos tenga esta propiedad. Este descriptor puede ser un descriptor de datos o un descriptor de acceso con las siguientes opciones:

descriptor de datos

Puede contener estos valores:

  • value – Valor de la propiedad. Por defecto: undefined.
  • writable – Si se establece en true, se puede modificar el valor de propiedad. Por defecto: false.
  • enumerable – Si se establece en true, una instrucción for…in puede enumerar la propiedad. Por defecto: false.
  • configurable – Si se establece en true, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto: false

descriptor de acceso

Puede contener estos valores:

  • get – Función que devuelve el valor de propiedad. La función no tiene parámetros. Por defecto: undefined.
  • set – Función que establece el valor de propiedad. Tiene un parámetro que contiene el valor que se va a asignar. Por defecto: undefined.
  • enumerable – Si se establece en true, una instrucción for…in puede enumerar la propiedad. Por defecto: false.
  • configurable – Si se establece en true, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto: false.

Ejemplo

var contador = Object.create(null, {
    incremento: {
        value: 1,
        writable: true
    },
    contador: {
        value: 0,
        writable: true
    },
    numero: {
        get: function () {
            if (this.contador === undefined) {
                this.contador = 0;
            }
            this.contador += this.incremento;
            return this.contador
        }, 
        set: function (x) {
            this.contador = x;
        }
    } 
});

// configuramos el incremento
contador.incremento = 2;

// usamos el contador
while (contador.numero <= 10) {
    console.log(contador.contador);  // se muestra 5 veces
}

Es un método de lo objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.create(prototype, descriptors).

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.defineProperties()

Agrega una o varias propiedades a un objeto, o modifica atributos de propiedades existentes.

Sintaxis

Object.defineProperties(objeto, descriptores)

objeto

referencia al objeto al que se quiere añadir nuevas propiedades o modificar las ya existentes.

descriptores

objeto con las propiedades que queremos añadir o modificar y las características que deseamos tenga estas propiedades por medio de descriptores de datos o descriptores de acceso. (ver Object.defineProperty para más detalle).

Ejemplo

Definimos un objeto con una propiedad incremento y otra numero que sirve de contador.

// creamos el objeto
var contador = {};

// creamos la propiedad con un descriptor de acceso
Object.defineProperties(contador, {
    incremento: {
        value: 1,
        writable: true
    },
    numero: {
        get: function () {
            if (this.contador === undefined) {
                this.contador = 0;
            }
            this.contador += this.incremento;
            return this.contador
        }, 
        set: function (x) {
            this.contador = x;
        }
    } 
});

// configuramos el incremento
contador.incremento = 2;

// usamos el contador
while (contador.numero <= 10) {
    console.log('prueba');  // se muestra 5 veces
}

Es una función del objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.defineProperties().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.defineProperty()

Agrega una propiedad a un objeto o modifica atributos de una propiedad existente.

Sintaxis

Object.defineProperty(objeto, propiedad, descriptor)

objeto

referencia al objeto al que se quiere añadir una nueva propiedad o modificar una ya existente.

propiedad

nombre de la propiedad que se quiere añadir.

descriptor

objeto con las características que deseamos tenga esta propiedad. Este descriptor puede ser un descriptor de datos o un descriptor de acceso con las siguientes opciones:

descriptor de datos

Puede contener estos valores:

  • value – Valor de la propiedad. Por defecto: undefined.
  • writable – Si se establece en true, se puede modificar el valor de propiedad. Por defecto: false.
  • enumerable – Si se establece en true, una instrucción for…in puede enumerar la propiedad. Por defecto: false.
  • configurable – Si se establece en true, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto: false

descriptor de acceso

Puede contener estos valores:

  • get – Función que devuelve el valor de propiedad. La función no tiene parámetros. Por defecto: undefined.
  • set – Función que establece el valor de propiedad. Tiene un parámetro que contiene el valor que se va a asignar. Por defecto: undefined.
  • enumerable – Si se establece en true, una instrucción for…in puede enumerar la propiedad. Por defecto: false.
  • configurable – Si se establece en true, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto: false.

Ejemplos

Utilización de un descriptor de datos:

// creamos el objeto
var libreria = new Object();

// creamos la propiedad de sólo lectura, pero que pueda ser eliminada
Object.defineProperty(libreria, 'version', {value: '1.0', writable: false, configurable: true});
console.log(libreria.version);  // '1.0'

// intentamos modificarla
libreria.version = '2.0';        // no es posible escribir esta propiedad
console.log(libreria.version);  // '1.0'

// la borramos
delete libreria.version;        // es posible eliminar esta propiedad
console.log(libreria.version);  // undefined

Utilización de un descriptor de acceso:

// creamos el objeto
var contador = {};

// creamos la propiedad con un descriptor de acceso
Object.defineProperty(contador, 'numero', {
    get: function () {
        if (this.contador === undefined) {
            this.contador = 0;
        }
        return ++this.contador
    }, 
    set: function (x) {
        this.contador = x;
    } 
});

// usamos el contador
while (contador.numero <= 10) {
    console.log('prueba');
}

Es una función del objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.defineProperty().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.freeze()

Impide la modificación y configuración de las propiedades existentes e impide agregar nuevas propiedades.

Sintaxis

Object.freeze(objeto)

objeto

referencia al objeto al que se bloquear la creación, configuración y modificación de propiedades.

Object.freeze() produce lo siguiente:

  • que el objeto no sea extensible y no se puedan agregar nuevas propiedades.
  • configura el atributo configurable como false para todas las propiedades del objeto y los atributos de las propiedades no se pueden cambiar y las propiedades no se pueden eliminar.
  • configura el writable como false para todas las propiedades de datos del objeto y el valor de las propiedades de datos no se puede cambiar.

Una vez configurado un objeto con esta función, la función Object.isFreeze() devolverá true, la función Object.isSeal() devolverá true y la función Object.isExtensible() devolverá false si se consultan con este objeto.

Ejemplo

// creamos el objeto
var libreria = {
    version: '1.0',
    autor: 'todojs',
    sumar: function(x, y) { return x + y; }
};

// bloqueamos la modificación y añadido de propiedades
Object.freeze(libreria);

// intentamos modificar una propiedad
libreria.version = '2.0';                            // no modifica la propiedad
console.log(libreria.version);

// intentamos borrar una propiedad
delete libreria.autor;                               // no borra la propiedad
console.log(libreria.autor);

// intenamos añadir un método
libreria.resta = function (x, y) { return x - y; };  // no añade el método
console.log(libreria.resta === undefined);

Es una función del objeto Object y no es heredada por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.freeze().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.getOwnPropertyDescriptor()

Obtiene el descriptor de una propiedad del objeto especificado.

Sólo funciona con propiedades definidas directamente en el objeto y no con aquellas que se heredan del prototipo del objeto.

Sintaxis

Object.getOwnPropertyDescriptor(objeto, propiedad)

objeto

referencia al objeto del que se quiere consultar el descriptor de propiedad.

propiedad

nombre de la propiedad que se quiere consultar.

Ejemplos

Se crea un objeto por medio de un literal y obtenemos el descriptor de una de sus propiedades:

// creamos el objeto
var libreria = { version: '1.0' };

// obtenemos el descriptor de la propiedad
var descriptor = Object.getOwnPropertyDescriptor(libreria, 'version');
console.dir(descriptor);   // { value: '1.0',
                           //   writable: true,
                           //   enumerable: true,
                           //   configurable: true }

Se crea añade una propiedad por medio de un descriptor de acceso y se consulta:

// creamos el objeto
var contador = new Object();

// creamos la propiedad con un descriptor de acceso
Object.defineProperty(contador, 'numero', {
    get: function () {
        if (this.contador === undefined) {
            this.contador = 0;
        }
        return ++this.contador
    }, 
    set: function (x) {
        this.contador = x;
    } 
});

// obtenemos el descriptor de la propiedad
var descriptor = Object.getOwnPropertyDescriptor(contador, 'numero');
console.dir(descriptor);   // { get: [Function],
                           //   set: [Function],
                           //   enumerable: false,
                           //   configurable: false }

Es una función del objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.getOwnPropertyDescriptor().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.getOwnPropertyNames()

Devuelve los nombres de las propiedades propias de un objeto, sean enumerables o no.

Sintaxis

Object.getOwnPropertyNames(objeto)

objeto

referencia al objeto del que se quiere consultar sus propiedades.

Devuelve una matriz con los nombres de las propiedades propias del objeto.

Object.getOwnPropertyNames() devuelve los nombres de propiedades y métodos tanto enumerables como no enumerables. Para devolver solo los nombres de propiedades y métodos enumerables se debe usar Object.keys().

Las propiedades propias de un objeto son aquellas definidas directamente en ese objeto, y no se heredan del prototipo del objeto, por lo tanto esta función no obtiene las propiedades de la cadena de prototipos del objeto y solo devuelve las propiedad que son miembros del propio objeto.

Ejemplos

Obtenemos las propiedades de un objeto predefinido de Javascript

// obtenemos las propiedades del objeto Math de Javascript
var propiedadesMath = Object.getOwnPropertyNames(Math);
console.dir(propiedadesMath);

Obtenemos las propiedades enumerables y no enumerables de un objeto creado con Object.Create():

// creación del objeto
var objeto = Object.create(null, {
    version: {
        value: '1.0',
        writable: false, 
        enumerable: false, 
        configurable: false
    },
    autor: {
        value: 'todojs',
        writable: false, 
        enumerable: true, 
        configurable: false
    }
});

// obtenemos las propiedades del objeto
var propiedades = Object.getOwnPropertyNames(objeto);
console.dir(propiedades);

Es una función del objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.getOwnPropertyNames().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.getPrototypeOf()

Devuelve el prototipo de un objeto.

Sintaxis

Object.getPrototypeOf(objeto)

objeto

referencia al objeto del que se quiere obtener su prototipo.

Ejemplo

// función constructora
function Libreria() {
    this.version = '1.0';
    this.autor = 'todojs';
}

// creación del objeto
var miLibreria = new Libreria();

// obtención del prototipo
var prototipo = Object.getPrototypeOf(miLibreria);

// modificamos el prototipo
prototipo.web = 'www.todojs.com';

// comprobamos que se ha modificado el objeto
console.log(miLibreria.web);  // www.todojs.com

Es una función del objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.getPrototypeOf().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 3

Object.isExtensible()

Devuelve true si se pueden agregar nuevas propiedades a un objeto.

Sintaxis

Object.isExtensible(objeto)

objeto

referencia al objeto al que se quiere consultar si se pueden agregar nuevas propiedades.

Las funciones Object.preventExtensions(), Object.seal() y Object.freeze() configuran el objeto como no extensible y por lo tanto no se pueden añadir nuevas propiedades.

Ejemplo

// creamos el objeto
var libreria = {
    version: '1.0',
    autor: 'todojs',
    sumar: function(x, y) { return x + y; }
};

// bloqueamos la modificación y añadido de propiedades
Object.freeze(libreria);

// comprobamos si se pueden añadir propiedades
if (Object.isExtensible(libreria)) {

    // añadimos un método
    libreria.resta = function (x, y) { return x - y; };
    console.log(libreria.resta === undefined);

} else {

    console.log('objeto no extensible');

}

Es una función del objeto Object y no es heredada por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.isExtensible().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.isFrozen()

Devuelve true si no se pueden modificar los atributos y valores de propiedad existentes en un objeto y no se pueden agregar nuevas propiedades al objeto.

Sintaxis

Object.isFrozen(objeto)

objeto

referencia al objeto al que se quiere consultar si no se pueden modificar propiedades existentes y agregar nuevas propiedades.

Las funciones Object.seal() y Object.freeze() configuran el objeto para que no se puedan modificar las propiedades existentes ni agregar nuevas propiedades.

Ejemplo

// creamos el objeto
var libreria = {
    version: '1.0',
    autor: 'todojs',
    sumar: function(x, y) { return x + y; }
};

// bloqueamos la modificación y añadido de propiedades
Object.freeze(libreria);

// comprobamos si se pueden modificar, configurar y añadir propiedades
if (Object.isFrozen(libreria)) {

    console.log('el objeto no permite modificar, configurar o añadir propiedades');

} else {

    // añadimos un método
    libreria.resta = function (x, y) { return x - y; };
    console.log(libreria.resta === undefined);

}

Es una función del objeto Object y no es heredada por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.isFrozen().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.isSealed()

Devuelve true si no se pueden modificar atributos de propiedad existentes en un objeto y no se pueden agregar nuevas propiedades al objeto.

Sintaxis

Object.isSealed(objeto)

objeto

referencia al objeto al que se quiere consultar si no se pueden agregar nuevas propiedades y cambiar la configuración de las ya existentes.

La función Object.seal() configura el objeto para que no se puedan añadir nuevas propiedades y cambiar la configuración de las ya existentes.

Ejemplo

// creamos el objeto
var libreria = {
    version: '1.0',
    autor: 'todojs',
    sumar: function(x, y) { return x + y; }
};

// bloqueamos el añadido de propiedades
Object.seal(libreria);

// comprobamos si se pueden modificar y añadir propiedades
if (Object.isSealed(libreria)) {

    console.log('el objeto no permite añadir propiedades');

} else {

    // añadimos un método
    libreria.resta = function (x, y) { return x - y; };
    console.log(libreria.resta === undefined);

}

Es una función del objeto Object y no es heredada por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.isSealed().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.keys()

Devuelve los nombres de las propiedades enumerables propias de un objeto.

Sintaxis

Object.keys(objeto)

objeto

referencia al objeto del que se quiere consultar sus propiedades.

Devuelve una matriz con los nombres de las propiedades enumerables propias del objeto.

Object.getOwnPropertyNames() devuelve los nombres de propiedades y métodos enumerables por medio de un bucle for...in. Para devolver los nombres de propiedades y métodos enumerables y no enumerables se debe usar Object.getOwnPropertyNames().

Las propiedades propias de un objeto son aquellas definidas directamente en ese objeto, y no se heredan del prototipo del objeto, por lo tanto esta función no obtiene las propiedades de la cadena de prototipos del objeto y solo devuelve las propiedad que son miembros del propio objeto.

Ejemplos

Obtenemos las propiedades enumerables de un objeto predefinido de Javascript

// obtenemos las propiedades enumerables del objeto Math de Javascript
var propiedadesMath = Object.keys(Math);
console.dir(propiedadesMath);               // ninguna

Obtenemos las propiedades enumerables de un objeto creado con Object.Create():

// creación del objeto
var objeto = Object.create(null, {
    version: {
        value: '1.0',
        writable: false, 
        enumerable: false, 
        configurable: false
    },
    autor: {
        value: 'todojs',
        writable: false, 
        enumerable: true, 
        configurable: false
    }
});

// obtenemos las propiedades enumerables del objeto
var propiedades = Object.keys(objeto);
console.dir(propiedades);                  // autor

Es una función del objeto Object y no es heredado por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.keys().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.preventExtensions()

Impide añadir nuevas propiedades a un objeto.

Sintaxis

Object.preventExtensions(objeto)

objeto

referencia al objeto al que se bloquear la creación de nuevas propiedades.

Object.preventExtensions() produce que el objeto no sea extensible y no se puedan agregar nuevas propiedades.

Una vez configurado un objeto con esta función Object.isExtensible() devolverá false si se consultan con este objeto.

Ejemplo

// creamos el objeto
var libreria = {
    version: '1.0',
    autor: 'todojs',
    sumar: function(x, y) { return x + y; }
};

// bloqueamos el añadir de nueva propiedades
Object.preventExtensions(libreria);

// intenamos añadir un método
libreria.resta = function (x, y) { return x - y; };  // no añade el método
console.log(libreria.resta === undefined);

Es una función del objeto Object y no es heredada por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.preventExtensions().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

Object.seal()

Impide la modificación de atributos de propiedades existentes e impide agregar nuevas propiedades.

Sintaxis

Object.seal(object)

objeto

referencia al objeto al que se bloquear la creación y configuración de propiedades.

Object.seal() produce lo siguiente:

  • que el objeto no sea extensible y no se puedan agregar nuevas propiedades.
  • configura el atributo configurable como false para todas las propiedades del objeto y los atributos de las propiedades no se pueden cambiar y las propiedades no se pueden eliminar.

Una vez configurado un objeto con esta función, la función Object.isSeal() devolverá true y la función Object.isExtensible() devolverá false si se consultan con este objeto.

Ejemplo

// creamos el objeto
var libreria = {
    version: '1.0',
    autor: 'todojs',
    sumar: function(x, y) { return x + y; }
};

// bloqueamos el añadir de nueva propiedades
Object.seal(libreria);

// intenamos añadir un método
libreria.resta = function (x, y) { return x - y; };  // no añade el método
console.log(libreria.resta === undefined);

Es una función del objeto Object y no es heredada por las instancias de objetos de tipo Object, por lo que solo puede ser invocado como Object.seal().

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 5

obj.constructor

Referencia a la función constructora del objeto.

Sintaxis

objeto.constructor

La propiedad constructor contiene una referencia a la función que crea instancias de este objeto concreto y puede ser utilizada para crear otros objetos o para comparar con el constructor.

Ejemplo

// función constructora
function Libreria() {
    this.version = '1.0';
    this.autor = 'todojs';
}

// creamos una instancia
var lib = new Libreria();

// comprobamos que el objeto lib tiene una referencia al constructor Libreria
if (lib.constructor === Libreria) {
    console.log('lib es un objeto creado a partir del constructor Libreria()');
}

La propiedad constructor está disponible en todos los objetos que tiene un prototipo. Por ejemplo, los objetos creados con new Object.create(null) no disponen de un prototipo y no tienen, por lo tanto, una propiedad constructor.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262

obj.hasOwnProperty()

Determina si un objeto tiene una propiedad propia con el nombre especificado.

Sintaxis

objeto.hasOwnProperty(propiedad)

objeto

objeto del que se quiere consultar su propiedad.

propiedad

nombre de la propiedad que se quiere consultar.

Las propiedades propias de un objeto son aquellas definidas directamente en ese objeto, y no se heredan del prototipo del objeto, por lo tanto esta función no comprueba las propiedades de la cadena de prototipos del objeto y solo valida las propiedad que son miembros del propio objeto.

Ejemplo

var objeto = new Object();
objeto.mipropiedad = 'uno';
console.log(objeto.hasOwnProperty('mipropiedad'));  // true
console.log(objeto.hasOwnProperty('noexiste'));     // false

Este método está está disponible en todos los objetos que heredan de Object de forma directa o indirecta. Por ejemplo, los objetos creados con new Object.create(null) no disponen de este método.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 3

obj.isPrototypeOf()

Determina si un objeto existe en la cadena de prototipos de otro objeto.

Sintaxis

objeto.isPrototypeOf(objeto2)

El método objeto.isPrototypeOf() devuelve true si objeto2 tiene a objeto1 en su cadena de prototipo, es decir, hereda de él.

El método objeto.isPrototypeOf() devuelve false cuando objeto2 no es un objeto o cuando objeto1 no aparece en la cadena de prototipos de objeto2.

Ejemplo

// Clase base
Libreria = function () {};

// Clase que hereda de Libreria
LibreriaJS = function () {};
LibreriaJS.prototype = new Libreria();

// Objeto del tipo heredado
var lib = new LibreriaJS();

// Comprobamos si está en la cadena de prototipos de Libreria
if (Libreria.prototype.isPrototypeOf(lib)) {
    console.log('lib es un objeto creado a partir Libreria()');
}

Este método está está disponible en todos los objetos que heredan de Object de forma directa o indirecta. Por ejemplo, los objetos creados con new Object.create(null) no disponen de este método.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 3

obj.propertyIsEnumerable()

Determina si una propiedad especificada existe en el objeto y es enumerable.

Sintaxis

objeto.propertyIsEnumerable(propiedad);

objeto

objeto del que se quiere consultar la propiedad.

propiedad

nombre de la propiedad que se quiere consultar.

El método propertyIsEnumerable() devuelve true si la propiedad existe en el objeto y se puede enumerar mediante un bucle for...in.

El método propertyIsEnumerable() devuelve false si objeto no tiene una propiedad con el nombre especificado o si la propiedad especificada no se puede enumerar.

Todos los objetos que heredan del tipo Object disponen de este método.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 3

obj.toLocaleString()

Devuelve una representación alfanumérica de un objeto.

Sintaxis

objeto.toLocaleString()

Llama al método objeto.toString() ajustando la salida a la configuración regional del equipo donde se está ejecutando este método.

De esta forma los objetos Array, Date y Number ajustarán su salida a la configuración regional del equipo donde se está ejecutando. El resto de objetos tendrán una salida idéntica a la proporcionada por objeto.toString().

Este método está está disponible en todos los objetos que heredan de Object de forma directa o indirecta. Por ejemplo, los objetos creados con new Object.create(null) no disponen de este método.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262 Edición 3

obj.toString()

Devuelve una representación alfanumérica de un objeto.

Sintaxis

objeto.toString()

El método valueOf() se implementa de forma diferente para cada objeto predefinido de Javascript.

  • Array: los elementos se convierten en cadenas. Las cadenas resultantes se concatenan, separadas por comas.
  • Boolean: devuelve la cadena "true" o "false".
  • Date: devuelve la representación en texto de la fecha.
  • Error: devuelve una cadena que contiene el mensaje de error asociado.
  • Function: devuelve una cadena que tiene el formato siguiente: function nombrefuncion() { [native code] } donde nombrefuncion es el nombre de la función a cuyo método toString() se llamó.
  • Number: devuelve la representación en texto del número.
  • String: devuelve el valor del objeto String.
  • Object: devuelve [object nombreobjeto], donde nombreobjeto es el nombre del tipo de objeto.

Este método está está disponible en todos los objetos que heredan de Object de forma directa o indirecta. Por ejemplo, los objetos creados con new Object.create(null) no disponen de este método.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262

obj.valueOf()

Devuelve el valor primitivo del objeto especificado.

Sintaxis

objeto.valueOf()

El método valueOf() se implementa de forma diferente para cada objeto predefinido de Javascript.

  • Array: devuelve la instancia de la matriz.
  • Boolean: devuelve el valor Boolean primitivo.
  • Date: devuelve el valor de hora almacenado en milisegundos desde la medianoche del 1 de enero de 1970 UTC.
  • Function: devuelve la propia función.
  • Number: devuelve el valor numérico primitivo.
  • Object: devuelve el propio objeto. Este es el valor por defecto.
  • String: devuelve el valor alfanumérico primitivo.

Este método está está disponible en todos los objetos que heredan de Object de forma directa o indirecta. Por ejemplo, los objetos creados con new Object.create(null) no disponen de este método.

Las características de este miembro (tal y como la describe la función Object.getOwnPropertyDescriptor()) son:

{"writable": true, "enumerable": false, "configurable": true}
ECMA-262