[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Object [Back]  [Original]

Object - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

Object

Baseline
Ampliamente disponible
*

Esta caracterstica est consolidada y funciona en muchos dispositivos y versiones de navegador. Est disponible en todos los navegadores desde julio de 2015.

* Algunas partes de esta caracterstica pueden tener distintos niveles de compatibilidad.

La clase Object representa uno de los tipos de datos en Javascript. Es usado para guardar una coleccin de datos definidos y entidades ms complejas. Los objetos pueden ser creados utilizando el constructor Object() o la sintaxis literal / inicializador de objeto.

En este artculo

Descripcin

Casi todos los objetos en JavaScript son instancias de Object; un objeto tpico hereda propiedades (incluyendo los mtodos) de Object.prototype, a pesar de que esas propiedades puedan ser sobreescritas. Aun as, un Object puede ser deliberadamente creado para que esto no se cumpla (por ejemplo con Object.create(null)), o puede alterarse para que esto no sea ms verdad (por ejemplo con Object.setPrototypeOf).

Los cambios realizados en el Object prototipo son vistos por todos los objetos de la cadena de prototipos, a no ser que las propiedades y mtodos sujetos a esos cambios hayan sido sobreescritos ms abajo en la cadena. Sobreescribir o extender el comportamiento de un objeto es un mecanismo muy poderoso, aunque potencialmente peligroso.

El constructor Objeto crea un envoltorio de objeto para el valor dado.

  • Si el valor es null o undefined, se crear un objeto y se retornar un objeto vaco.
  • Si el valor ya es un objeto, entonces se retornar el valor.
  • En cualquier otro caso, se retornar un objeto del Tipo que corresponda al valor dado.

Cuando lo llamamos en un contexto no-constructivo, Object se comporta igual que new Object().

Vase tambin la la sintaxis literal / inicializador de objeto.

Borrando una propiedad de un objeto

No hay ningn mtodo en un Objeto que sirva para borrar sus propiedades (como Map.prototype.delete()). Para hacerlo, es necesario el uso del operador delete.

Constructor

Object()

Crea un nuevo objeto Object. Este es un envoltorio para el valor dado.

Mtodos estticos

Object.assign()

Copia los valores de todas las propiedades enumerables propias de uno o ms objetos fuente al objeto asignado.

Object.create()

Crea un nuevo objeto con el objeto prototipal especificado y sus propiedades.

Object.defineProperty()

Agrega la propiedad nombrada descrita por el descriptor dado a un objeto.

Object.defineProperties()

Aade las propiedades nombradas a un objeto.

Object.entries()

Devuelve un array que contiene todos los pares [key, value] de las propiedades enumerables en formato cadena de texto que le pertenecen a un objeto dado.

Object.freeze()

Congela un objeto. Otro cdigo no puede borrar ni cambiar sus propiedades.

Object.fromEntries()

Devuelve un nuevo objeto de los pares iterables [key, value]. (Este mtodo hace lo contrario a Object.entries).

Object.getOwnPropertyDescriptor()

Devuelve un descriptor de propiedad para una propiedad nombrada en un objeto.

Object.getOwnPropertyDescriptors()

Devuelve un objeto con todos los descriptores de propiedad pertenecientes a un objeto.

Object.getOwnPropertyNames()

Devuelve un arreglo que contiene todos los nombres de las propiedades enumerables y no enumerables que le pertenecen a un objeto dado.

Object.getOwnPropertySymbols()

Devuelve un objeto que contiene todas las propiedades smbolo encontradas directamente en un objeto dado.

Object.getPrototypeOf()

Devuelve el prototipo (la propiedad interna [[Prototype]]) del objeto especificado.

Object.is()

Compara si dos valores son el mismo valor. Iguala todos los valores NaN (lo que difiere de la Comparacin Abstracta de Igualdad y de la Comparacin Estricta de Igualdad).

Object.isExtensible()

Determina si est permitido extender un objeto.

Object.isFrozen()

Determina si un objeto est congelado.

Object.isSealed()

Determines si un objeto est sellado.

Object.keys()

Devuelve un arreglo que contiene todos los nombres de las propiedades enumerables de tipo cadena de texto pertenecientes al objeto dado.

Object.preventExtensions()

Previene que un objeto pueda extenderse.

Object.seal()

Previene que otro cdigo pueda borrar propiedades de un objeto.

Object.setPrototypeOf()

Estipula el prototipo de un objeto (su propiedad interna [[Prototype]]).

Object.values()

Devuelve un arreglo que contiene todos los valores correspondientes a las propiedades enumerables de tipo cadena de texto pertenecientes a un objeto dado.

Propiedades de instancia

Object.prototype.constructor

Especifica la funcin que crea el prototipo de un objeto.

Object.prototype.__proto__

Apunta al objeto que fue usado como prototipo cuando el objeto fue instanciado.

Mtodos de instancia

Object.prototype.__defineGetter__()

Asocia una funcin a una propiedad que, cuando es accedida, ejecuta la funcin y retorna su valor de retorno.

Object.prototype.__defineSetter__()

Asocia una funcin a una propiedad que, cuando es estipulada, ejecuta la funcin que modificar dicha propiedad.

Object.prototype.__lookupGetter__()

Devuelve la funcin asociada a la propiedad establecida por el mtodo Object.prototype.__defineGetter__().

Object.prototype.__lookupSetter__()

Devuelve la funcin asociada a la propiedad establecida por el mtodo Object.prototype.__defineSetter__().

Object.prototype.hasOwnProperty()

Devuelve un booleano que indica si el objeto contiene una propiedad determinada como una propiedad directa del objeto y que no haya sido heredada a travs de la cadena de prototipos.

Object.prototype.isPrototypeOf()

Devuelve un booleano que indica si el objeto por el cual este mtodo est siendo llamado est en la cadena de prototipos del objeto especficado.

Object.prototype.propertyIsEnumerable()

Devuelve un booleano indicando si el [atributo ECMAScript [Enumerable]] interno est establecido.

Object.prototype.toLocaleString()

Llama a toString().

Object.prototype.toString()

Devuelve una representacin del objeto en formato cadena de texto.

Object.prototype.valueOf()

Devuelve el valor primitivo del objeto especificado.

Ejemplos

Usando Object dados los tipos undefined y null

Los siguientes ejemplos almacenan un objeto vaco Object en o:

js
let o = new Object();
js
let o = new Object(undefined);
js
let o = new Object(null);

Usando Object para crear objetos Boolean

Los siguientes ejemplos almacenan objetos Boolean en o:

js
// equivalente a o = new Boolean(true)
let o = new Object(true);
js
// equivalente a o = new Boolean(false)
let o = new Object(Boolean());

Prototipos del objeto

Cuando altere el comportamiento de los mtodos existentes en Object.prototype, considere inyectar el cdigo envolviendo la extensin antes o despus de la lgica existente. Por ejemplo, este cdigo (no testeado) ejecutar precondicionalmente la lgica modificada antes que la lgica predefinida o la ejecucin de cualquier otra extensin.

Cuando una funcin es llamada, los argumentos de la llamada son retenidos por la "variable" pseudo-arreglo arguments. Por ejemplo en la llamada myFn(a, b, c), los argumentos dentro del cuerpo de myFn contendrn tres elementos pseudo-arreglo correspondientes a (a, b, c).

Cuando modificamos prototipos con hooks, pase this y sus argumentos (el estado durante el llamado) al actual comportamiento llamando a apply() en la funcin. Esta patrn puede ser usado por cualquier prototipo, como Node.prototype, Function.prototype, etc.

js
var current = Object.prototype.valueOf;

// Ya que mi propiedad "-prop-value" es transversal y no siempre est
// en la misma cadena protipal, yo quiero cambiar el Object.prototype:
Object.prototype.valueOf = function () {
  if (this.hasOwnProperty("-prop-value")) {
    return this["-prop-value"];
  } else {
    // Si no parece uno de mis objetos, debo caer en
    // el comportamiento predeterminado reproduciendo el comportamiento actual lo mejor que podamos.
    // Apply se comporta como lo hace "super" en otros lenguajes.
    // A pesar de que valueOf() no tome ningn argumento, puede hacerlo.
    return current.apply(this, arguments);
  }
};

Ya que JavaScript no tiene exactamente objetos sub-clase, el prototipo sirve para crear objetos que acten como "clase base" para ciertas funciones que actan como objetos y as mitigar esta limitacin. Por ejemplo:

js
var Person = function (name) {
  this.name = name;
  this.canTalk = true;
};

Person.prototype.greet = function () {
  if (this.canTalk) {
    console.log("Hola, yo soy " + this.name);
  }
};

var Employee = function (name, title) {
  Person.call(this, name);
  this.title = title;
};

Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
//Si no aplicas Object.prototype.constructor a Employee,
//tomar prototype.constructor de Person (padre).
//Para evitarlo, aplicamos prototype.constructor a Employee (hijo).

Employee.prototype.greet = function () {
  if (this.canTalk) {
    console.log("Hola, yo soy " + this.name + ", el " + this.title);
  }
};

var Customer = function (name) {
  Person.call(this, name);
};

Customer.prototype = Object.create(Person.prototype);
Customer.prototype.constructor = Customer;
//Si no aplicas Object.prototype.constructor a Customer,
//tomar prototype.constructor de Person (padre).
//Para evitarlo, aplicamos prototype.constructor a Customer (hijo).

var Mime = function (name) {
  Person.call(this, name);
  this.canTalk = false;
};

Mime.prototype = Object.create(Person.prototype);
Mime.prototype.constructor = Mime;
//Si no aplicas Object.prototype.constructor a Mime,
//tomar prototype.constructor de Person (padre).
//Para evitarlo, aplicamos prototype.constructor a Mime (hijo).

var bob = new Employee("Bob", "Constructor");
var joe = new Customer("Joe");
var rg = new Employee("Red Green", "Reparador");
var mike = new Customer("Mike");
var mime = new Mime("Mime");

bob.greet();
// Hola, yo soy Bob, el Constructor

joe.greet();
// Hola, yo soy Joe

rg.greet();
// Hola, yo soy Red Green, el Reparador

mike.greet();
// Hola, yo soy Mike

mime.greet();

Especificaciones

Especificacin
ECMAScript 2027 LanguageSpecification
# sec-object-objects

Compatibilidad con navegadores

Vase tambin


Web Proxy Viewer  |  New URL  |  Original Page