From 310f9d126ee841807f15a8620da5a9de6a9da4ec Mon Sep 17 00:00:00 2001 From: Hector Mora <72320343+hectormoba@users.noreply.github.com> Date: Tue, 15 Mar 2022 14:53:12 -0300 Subject: new index.md for global object Object page translated for latest engl… (#4430) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * new index.md for global object Object page translated for latest english version. Fixed {{page}} macro bug. * Remote tags Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Typo Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Reference to ES version Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Reference to ES version Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Reference to ES version Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * fixed typo and delete outdated clarification of EN version * Change title to ES Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Change title to ES Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Add line Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Adding browser compact Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> * Typo Co-authored-by: Juan Vásquez * Typo Co-authored-by: Juan Vásquez * Typo Co-authored-by: Juan Vásquez * Typo Co-authored-by: Juan Vásquez * Change reference to ES version Co-authored-by: Juan Vásquez * fixed coments structure * Typo Co-authored-by: Juan Vásquez Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com> Co-authored-by: Juan Vásquez --- .../reference/global_objects/object/index.html | 188 --------------- .../reference/global_objects/object/index.md | 254 +++++++++++++++++++++ 2 files changed, 254 insertions(+), 188 deletions(-) delete mode 100644 files/es/web/javascript/reference/global_objects/object/index.html create mode 100644 files/es/web/javascript/reference/global_objects/object/index.md diff --git a/files/es/web/javascript/reference/global_objects/object/index.html b/files/es/web/javascript/reference/global_objects/object/index.html deleted file mode 100644 index 0814565c36..0000000000 --- a/files/es/web/javascript/reference/global_objects/object/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: Object -slug: Web/JavaScript/Reference/Global_Objects/Object -tags: - - Constructor - - JavaScript - - Objeto - - Referencia -translation_of: Web/JavaScript/Reference/Global_Objects/Object -original_slug: Web/JavaScript/Referencia/Objetos_globales/Object ---- -
{{JSRef}}
- -
La clase Object representa uno de los tipos de datos de Javascript. Es es usado para guardar una colección de datos definidos y entidades más complejas. Los objetos pueden ser creados utilzando el constructor {{jsxref("Object/Object", "Object()")}} o la sintaxis literal de objeto. 
- -

El constructor Object crea una envoltura al objeto.

- -

Sintaxis

- - - -
// Object initialiser or literal
-{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
-
-// Called as a constructor
-new Object([value])
- -

Parámetros

- -
-
nameValuePair1, nameValuePair2, ... nameValuePairN
-
Los pares de nombres (strings) y los valores (cualquier valor) donde los nombres son separados por una coma.
-
valor
-
Cualquier valor.
-
- -

Description

- -

El constructor Object crea una envoltura de objeto  al valor dado.  Si el valor es  {{jsxref("null")}} o {{jsxref("undefined")}}, creará y retornará un objeto vacío, de otra forma, retornará un objeto de un tipo que corresponda al valor dado. Si el valor ya es un objeto devolverá el valor.

- -

Cuando es llamano en un contexto non-constructor, Object se comportará indenticamente a new Object().

- -

Ver object initializer / literal syntax.

- -

Propiedades del constructor Object

- -
-
Object.length
-
Tiene un valor de 1.
-
{{jsxref("Object.prototype")}}
-
Permite añadir propiedades a todos los objetos del tipo Object.
-
- -

Métodos del constructor  Object

- -
-
{{jsxref("Object.assign()")}}
-
Copia los valores de todas sus propiedades enumerables desde uno o más objetos fuente a un objeto destino.
-
{{jsxref("Object.create()")}}
-
Crea un nuevo objeto con el prototipo objeto y propiedades específicadas.
-
{{jsxref("Object.defineProperty()")}}
-
Añade la propiedad nombrada descrita por un descriptor dado a un objeto.
-
{{jsxref("Object.defineProperties()")}}
-
Agrega las propiedades nombradas descritas por los descriptores dados a un objeto.
-
{{jsxref("Object.entries()")}}
-
Returns an array containing all of the [key, value] pairs of a given object's own enumerable string properties.
-
{{jsxref("Object.freeze()")}}
-
Freezes an object: other code can't delete or change any properties.
-
{{jsxref("Object.fromEntries()")}}
-
Returns a new object from an iterable of key-value pairs (reverses {{jsxref("Object.entries")}}).
-
{{jsxref("Object.getOwnPropertyDescriptor()")}}
-
Returns a property descriptor for a named property on an object.
-
{{jsxref("Object.getOwnPropertyDescriptors()")}}
-
Returns an object containing all own property descriptors for an object.
-
{{jsxref("Object.getOwnPropertyNames()")}}
-
Returns an array containing the names of all of the given object's own enumerable and non-enumerable properties.
-
{{jsxref("Object.getOwnPropertySymbols()")}}
-
Returns an array of all symbol properties found directly upon a given object.
-
{{jsxref("Object.getPrototypeOf()")}}
-
Returns the prototype of the specified object.
-
{{jsxref("Object.is()")}}
-
Compares if two values are the same value. Equates all NaN values (which differs from both Abstract Equality Comparison and Strict Equality Comparison).
-
{{jsxref("Object.isExtensible()")}}
-
Determines if extending of an object is allowed.
-
{{jsxref("Object.isFrozen()")}}
-
Determines if an object was frozen.
-
{{jsxref("Object.isSealed()")}}
-
Determines if an object is sealed.
-
{{jsxref("Object.keys()")}}
-
Returns an array containing the names of all of the given object's own enumerable string properties.
-
{{jsxref("Object.preventExtensions()")}}
-
Prevents any extensions of an object.
-
{{jsxref("Object.seal()")}}
-
Prevents other code from deleting properties of an object.
-
{{jsxref("Object.setPrototypeOf()")}}
-
Sets the prototype (i.e., the internal [[Prototype]] property).
-
{{jsxref("Object.values()")}}
-
Returns an array containing the values that correspond to all of a given object's own enumerable string properties.
-
- -

Object instances and Object prototype object

- -

All objects in JavaScript are descended from Object; all objects inherit methods and properties from {{jsxref("Object.prototype")}}, although they may be overridden. For example, other constructors' prototypes override the constructor property and provide their own toString() methods. Changes to the Object prototype object are propagated to all objects unless the properties and methods subject to those changes are overridden further along the prototype chain.

- -

Properties

- -
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Properties') }}
- -

Methods

- -
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Methods') }}
- -

Deleting a property from an object

- -

There isn't any method in an Object itself to delete its own properties (e.g. like Map.prototype.delete()). To do so one has to use the delete operator.

- -

Examples

- -

Using Object given undefined and null types

- -

The following examples store an empty Object object in o:

- -
var o = new Object();
-
- -
var o = new Object(undefined);
-
- -
var o = new Object(null);
-
- -

Using Object to create Boolean objects

- -

The following examples store {{jsxref("Boolean")}} objects in o:

- -
// equivalent to o = new Boolean(true);
-var o = new Object(true);
-
- -
// equivalent to o = new Boolean(false);
-var o = new Object(Boolean());
-
- -

Specifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2', 'Object')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-object-objects', 'Object')}}{{Spec2('ES6')}}Added Object.assign, Object.getOwnPropertySymbols, Object.setPrototypeOf, Object.is
{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}{{Spec2('ESDraft')}}Added Object.entries, Object.values and Object.getOwnPropertyDescriptors.
- -

Browser compatibility

- -
- - -

{{Compat("javascript.builtins.Object")}}

-
- -

See also

- - diff --git a/files/es/web/javascript/reference/global_objects/object/index.md b/files/es/web/javascript/reference/global_objects/object/index.md new file mode 100644 index 0000000000..cb356ecd6c --- /dev/null +++ b/files/es/web/javascript/reference/global_objects/object/index.md @@ -0,0 +1,254 @@ +--- +title: Object +slug: Web/JavaScript/Reference/Global_Objects/Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object +original_slug: Web/JavaScript/Referencia/Objetos_globales/Object +browser-compat: javascript.builtins.Object +--- + +{{JSRef}} + +La clase **`Object`** representa uno de los [tipos de datos en Javascript](/es/docs/Web/JavaScript/Data_structures). Es usado para guardar una colección de datos definidos y entidades más complejas. Los objetos pueden ser creados utilzando el constructor {{jsxref("Object/Object", "Object()")}} o [la sintaxis literal / inicializador de objeto](/es/docs/Web/JavaScript/Reference/Operators/Object_initializer). + +## Descripción + +Casi todos los objetos en JavaScript son instancias de {{jsxref("Object")}}; un objeto típico hereda propiedades (incluyendo los métodos) de `Object.prototype`, a pesar de que esas propiedas puedan ser sobreescritas. Aun así, un `Object` puede ser deliberadamente creado para que esto no se cumpla (por ejemplo con {{jsxref("Object.create", "Object.create(null)")}}) o puede alterarse para que esto no sea más verdad (por ejemplo con {{jsxref("Object.setPrototypeOf")}}). + +Los cambios realizados en el `Object` prototipo son vistos por todos los objetos de la cadena prototipal, a no ser que las propiedas y métodos sujetos a esos cambios hayan sido sobreecritos más 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 {{jsxref("null")}} or {{jsxref("undefined")}}, se creará un objeto y se devolverá un objeto vacío. +- 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()`. + +Véase también la [la sintaxis literal / inicializador de objeto](/es/docs/Web/JavaScript/Reference/Operators/Object_initializer). + +## Borrando una propiedad de un objeto + +No hay ningún método en un Objeto que sirva para borrar sus propiedades (como {{jsxref("Map.prototype.delete", "Map.prototype.delete()")}}). Para hacerlo, es necesario el uso del [operador delete](/es/docs/Web/JavaScript/Reference/Operators/delete). + +## Constructor + +- {{jsxref("Object/Object", "Object()")}} + - : Crea un nuevo objeto `Object`. Este es un envoltorio para el valor dado. + +## Métodos estáticos + +- {{jsxref("Object.assign","Object.assign()")}} + - : Copia los valores de todas las propiedades de uno o más objetos fuente al objeto asignado. +- {{jsxref("Object.create","Object.create()")}} + - : Crea un nuevo objeto con el objeto prototipal especificado y sus propiedades. +- {{jsxref("Object.defineProperty","Object.defineProperty()")}} + - : Añade la propiedad nombrada a un objeto. +- {{jsxref("Object.defineProperties","Object.defineProperties()")}} + - : Añade las propiedades nombradas a un objeto. +- {{jsxref("Object.entries","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. +- {{jsxref("Object.freeze","Object.freeze()")}} + - : Congela un objeto. Otro código no puede borrar ni cambiar sus propiedades. +- {{jsxref("Object.fromEntries","Object.fromEntries()")}} + - : Devuevle un nuevo objeto de los pares iterables `[key, value]`. (Este método hace lo contario a {{jsxref("Object.entries")}}). +- {{jsxref("Object.getOwnPropertyDescriptor","Object.getOwnPropertyDescriptor()")}} + - : Devuevle un descriptor de propiedad para una propiedad nombrada en un objeto. +- {{jsxref("Object.getOwnPropertyDescriptors","Object.getOwnPropertyDescriptors()")}} + - : Devuelve un objeto con todos los descriptores de propiedad pertenecientes a un objeto. +- {{jsxref("Object.getOwnPropertyNames","Object.getOwnPropertyNames()")}} + - : Devuelve un arreglo que contiene todos los nombres de las propiedades enumerables y no enumerables que le **pertetecen** a un objeto dado. +- {{jsxref("Object.getOwnPropertySymbols","Object.getOwnPropertySymbols()")}} + - : Devuelve un objeto que contiene todas las propiedades símbolo encontradas directamente en un objeto dado. +- {{jsxref("Object.getPrototypeOf","Object.getPrototypeOf()")}} + - : Devuelve el prototipo (la propiedad interna `[[Prototype]]`) del objeto especificado. +- {{jsxref("Object.is","Object.is()")}} + - : Compara si dos valores son el mismo valor. Iguala todos los valores `NaN` (lo que difiere de la Comparación Abstracta de Igualdad y de la Comparación Estricta de Igualdad). +- {{jsxref("Object.isExtensible","Object.isExtensible()")}} + - : Determina si está permitido extender un objeto. +- {{jsxref("Object.isFrozen","Object.isFrozen()")}} + - : Determina si un objeto está congelado. +- {{jsxref("Object.isSealed","Object.isSealed()")}} + - : Determines si un objeto está sellado. +- {{jsxref("Object.keys","Object.keys()")}} + - : Devuelve un arreglo que contiene todos los nombres de las propiedades enumerables de tipo cadena de texto **pertenecientes** al objeto dado. +- {{jsxref("Object.preventExtensions","Object.preventExtensions()")}} + - : Previene que un objeto pueda extenderse. +- {{jsxref("Object.seal","Object.seal()")}} + - : Previene que otro código pueda borrar propiedades de un objeto. +- {{jsxref("Object.setPrototypeOf","Object.setPrototypeOf()")}} + - : Estipula el prototipo de un objeto (su propiedad interna `[[Prototype]]`). +- {{jsxref("Object.values","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 + +- {{jsxref("Object.prototype.constructor")}} + - : Especifica la función que crea el prototipo de un objeto. +- {{jsxref("Object/proto","Object.prototype.__proto__")}} + - : Apunta al objeto que fue usado como prototipo cuando el objeto fue instanciado. + +## Métodos de instancia + +- {{jsxref("Object.prototype.__defineGetter__()")}} + - : Asocia una función a una propiedad que, cuando es accedida, ejecuta la función y retorna su valor de retorno. +- {{jsxref("Object.prototype.__defineSetter__()")}} + - : Asocia una función a una propiedad que, cuando es estipulada, ejecuta la función que modificará dicha propiedad. +- {{jsxref("Object.prototype.__lookupGetter__()")}} + - : Devuelve la función asociada a la propiedad establecida por el método {{jsxref("Object.prototype.__defineGetter__()", "__defineGetter__()")}}. +- {{jsxref("Object.prototype.__lookupSetter__()")}} + - : Devuevle la función asociada a la propiedad establecida por el método {{jsxref("Object.prototype.__defineSetter__()", "__defineSetter__()")}}. +- {{jsxref("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 través de la cadena prototipal. +- {{jsxref("Object.prototype.isPrototypeOf()")}} + - : Devuelve un booleano que indica si el objeto por el cual este método está siendo llamado está en la cadena prototipal del objeto específicado. +- {{jsxref("Object.prototype.propertyIsEnumerable()")}} + - : Devuelve un booleano indicando si el [atributo ECMAScript \[\[Enumerable\]\]](/es/docs/Web/JavaScript/Data_structures#propiedades) interno está establecido. +- {{jsxref("Object.prototype.toLocaleString()")}} + - : Llama a {{jsxref("Object.toString", "toString()")}}. +- {{jsxref("Object.prototype.toString()")}} + - : Devuelve una representación del objeto en formato cadena de texto. +- {{jsxref("Object.prototype.valueOf()")}} + - : Devuelve el valor primitivo del objeto especificado. + +## Ejemplos + +### Usando `Object` dándole tipos `undefined` y `null` + +Los siguientes ejemplos almacenan un objeto vacío `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 {{jsxref("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 métodos existentes en `Object.prototype`, considere inyectar el código envolviendo la extensión antes o después de la lógica existente. Por ejemplo, este código (no testeado) ejecutará precondicionalmente la lógica modificada antes que la lógica predefinida o la ejecución de cualquier otra extensión. + +Cuando una función es llamada, los argumentos de la llamada son tenidos por la "variable" pseudo-arreglo [arguments] (/es/docs/Web/JavaScript/Reference/Functions/arguments). Por ejemplo en la llamada `myFn(a, b, c)`, los argumentos dentro del cuerpo de `myFn` contendrán 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 función. Esta patrón puede ser usado por cualquier prototypo, 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 ningún argumento, puede hacerlo. + return current.apply(this, arguments); + } +}; +``` + +Ya que JavaScript no tiene exactamente objetos subclasse, el prototipo sirve para crear objetos que actúen como "clase base" para ciertas funciones que actúan como objetos y así mitigar esta limitación. Por ejemplo: + +```js +var Person = function (name) { + this.name = name; + this.canTalk = true; +}; + +Person.prototype.greet = function () { + if (this.canTalk) { + console.log("Hi, I am " + 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("Hi, I am " + this.name + ", the " + 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", "Builder"); +var joe = new Customer("Joe"); +var rg = new Employee("Red Green", "Handyman"); +var mike = new Customer("Mike"); +var mime = new Mime("Mime"); + +bob.greet(); +// Hi, I am Bob, the Builder + +joe.greet(); +// Hi, I am Joe + +rg.greet(); +// Hi, I am Red Green, the Handyman + +mike.greet(); +// Hi, I am Mike + +mime.greet(); +``` + +## Especificaciones + +{{Specifications}} + +## Compatibilidad con navegadores + +{{Compat}} + +## Véase también + +- [Inicializador de objeto](/es/docs/Web/JavaScript/Reference/Operators/Object_initializer). -- cgit v1.2.3-54-g00ecf