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
Sintaxisvar objeto = new Object([valor])
var objeto = new Object([valor])
[valor]
Opcional. Puede ser cualquiera de los tipos de datos primitivos de Javascript (
Number
,Boolean
oString
). 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 tipoObject
.
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);
// 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
.
Object.prototype
Prototipo de los objetos del tipo Object
.
SintaxisObject.prototype
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.
Object.create()
Crea un objeto con el prototipo especificado y que contiene, opcionalmente, las propiedades especificadas.
SintaxisObject.create(prototipo, [descriptores])
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 entrue
, se puede modificar el valor de propiedad. Por defecto:false
.enumerable
– Si se establece entrue
, una instrucciónfor…in
puede enumerar la propiedad. Por defecto:false
.configurable
– Si se establece entrue
, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto: falsedescriptor 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 entrue
, una instrucciónfor…in
puede enumerar la propiedad. Por defecto:false
.configurable
– Si se establece entrue
, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto:false
.
Ejemplovar 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
}
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}
Object.defineProperties()
Agrega una o varias propiedades a un objeto, o modifica atributos de propiedades existentes.
SintaxisObject.defineProperties(objeto, descriptores)
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}
Object.defineProperty()
Agrega una propiedad a un objeto o modifica atributos de una propiedad existente.
SintaxisObject.defineProperty(objeto, propiedad, descriptor)
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 entrue
, se puede modificar el valor de propiedad. Por defecto:false
.enumerable
– Si se establece entrue
, una instrucciónfor…in
puede enumerar la propiedad. Por defecto:false
.configurable
– Si se establece entrue
, se pueden cambiar los atributos de propiedad y se puede eliminar la propiedad. Por defecto: falsedescriptor 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 entrue
, una instrucciónfor…in
puede enumerar la propiedad. Por defecto:false
.configurable
– Si se establece entrue
, 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}
Object.freeze()
Impide la modificación y configuración de las propiedades existentes e impide agregar nuevas propiedades.
SintaxisObject.freeze(objeto)
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
comofalse
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
comofalse
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);
// 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}
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.
SintaxisObject.getOwnPropertyDescriptor(objeto, propiedad)
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}
Object.getOwnPropertyNames()
Devuelve los nombres de las propiedades propias de un objeto, sean enumerables o no.
SintaxisObject.getOwnPropertyNames(objeto)
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}
Object.getPrototypeOf()
Devuelve el prototipo de un objeto.
SintaxisObject.getPrototypeOf(objeto)
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
// 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}
Object.isExtensible()
Devuelve true
si se pueden agregar nuevas propiedades a un objeto.
SintaxisObject.isExtensible(objeto)
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');
}
// 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}
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.
SintaxisObject.isFrozen(objeto)
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);
}
// 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}
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.
SintaxisObject.isSealed(objeto)
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);
}
// 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}
Object.keys()
Devuelve los nombres de las propiedades enumerables propias de un objeto.
SintaxisObject.keys(objeto)
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}
Object.preventExtensions()
Impide añadir nuevas propiedades a un objeto.
SintaxisObject.preventExtensions(objeto)
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);
// 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}
Object.seal()
Impide la modificación de atributos de propiedades existentes e impide agregar nuevas propiedades.
SintaxisObject.seal(object)
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
comofalse
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);
// 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}
obj.constructor
Referencia a la función constructora del objeto.
Sintaxisobjeto.constructor
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()');
}
// 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}
obj.hasOwnProperty()
Determina si un objeto tiene una propiedad propia con el nombre especificado.
Sintaxisobjeto.hasOwnProperty(propiedad)
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.
Ejemplovar objeto = new Object();
objeto.mipropiedad = 'uno';
console.log(objeto.hasOwnProperty('mipropiedad')); // true
console.log(objeto.hasOwnProperty('noexiste')); // false
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}
obj.isPrototypeOf()
Determina si un objeto existe en la cadena de prototipos de otro objeto.
Sintaxisobjeto.isPrototypeOf(objeto2)
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()');
}
// 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}
obj.propertyIsEnumerable()
Determina si una propiedad especificada existe en el objeto y es enumerable.
Sintaxisobjeto.propertyIsEnumerable(propiedad);
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}
obj.toLocaleString()
Devuelve una representación alfanumérica de un objeto.
Sintaxisobjeto.toLocaleString()
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}
obj.toString()
Devuelve una representación alfanumérica de un objeto.
Sintaxisobjeto.toString()
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] }
dondenombrefuncion
es el nombre de la función a cuyo métodotoString()
se llamó.Number
: devuelve la representación en texto del número.String
: devuelve el valor del objeto String.Object
: devuelve[object
nombreobjeto
]
, dondenombreobjeto
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}
obj.valueOf()
Devuelve el valor primitivo del objeto especificado.
Sintaxisobjeto.valueOf()
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}