diff options
author | Hector Mora <72320343+hectormoba@users.noreply.github.com> | 2022-03-15 14:53:12 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-15 11:53:12 -0600 |
commit | 310f9d126ee841807f15a8620da5a9de6a9da4ec (patch) | |
tree | 533817e79871b44ba0d2e53ef69dd2e86726640b | |
parent | d9f32573f7f2e76a4a5d1f574a4a6516559cc168 (diff) | |
download | translated-content-310f9d126ee841807f15a8620da5a9de6a9da4ec.tar.gz translated-content-310f9d126ee841807f15a8620da5a9de6a9da4ec.tar.bz2 translated-content-310f9d126ee841807f15a8620da5a9de6a9da4ec.zip |
new index.md for global object Object page translated for latest engl… (#4430)
* 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 <juan@logicalbricks.com>
* Typo
Co-authored-by: Juan Vásquez <juan@logicalbricks.com>
* Typo
Co-authored-by: Juan Vásquez <juan@logicalbricks.com>
* Typo
Co-authored-by: Juan Vásquez <juan@logicalbricks.com>
* Change reference to ES version
Co-authored-by: Juan Vásquez <juan@logicalbricks.com>
* fixed coments structure
* Typo
Co-authored-by: Juan Vásquez <juan@logicalbricks.com>
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
Co-authored-by: Juan Vásquez <juan@logicalbricks.com>
-rw-r--r-- | files/es/web/javascript/reference/global_objects/object/index.html | 188 | ||||
-rw-r--r-- | files/es/web/javascript/reference/global_objects/object/index.md | 254 |
2 files changed, 254 insertions, 188 deletions
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 ---- -<div>{{JSRef}}</div> - -<div>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. </div> - -<p>El constructor <code><strong>Object</strong></code> crea una envoltura al objeto.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - - - -<pre class="syntaxbox notranslate">// Object initialiser or literal -{ [ <var>nameValuePair1</var>[, <var>nameValuePair2</var>[, ...<var>nameValuePairN</var>] ] ] } - -// Called as a constructor -new Object([<var>value</var>])</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>nameValuePair1, nameValuePair2, ... nameValuePair<em>N</em></code></dt> - <dd>Los pares de nombres (strings) y los valores (cualquier valor) donde los nombres son separados por una coma.</dd> - <dt><code>valor</code></dt> - <dd>Cualquier valor.</dd> -</dl> - -<h2 id="Description">Description</h2> - -<p>El constructor <code>Object</code> 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.</p> - -<p>Cuando es llamano en un contexto non-constructor, <code>Object </code>se comportará indenticamente a <code>new Object()</code>.</p> - -<p>Ver <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer">object initializer / literal syntax</a>.</p> - -<h2 id="Propiedades_del_constructor_Object">Propiedades del constructor <code>Object</code></h2> - -<dl> - <dt><code>Object.length</code></dt> - <dd>Tiene un valor de 1.</dd> - <dt>{{jsxref("Object.prototype")}}</dt> - <dd>Permite añadir propiedades a todos los objetos del tipo Object.</dd> -</dl> - -<h2 id="Métodos_del_constructor_Object">Métodos del constructor <code>Object</code></h2> - -<dl> - <dt>{{jsxref("Object.assign()")}}</dt> - <dd>Copia los valores de todas sus propiedades enumerables desde uno o más objetos fuente a un objeto destino.</dd> - <dt>{{jsxref("Object.create()")}}</dt> - <dd>Crea un nuevo objeto con el prototipo objeto y propiedades específicadas.</dd> - <dt>{{jsxref("Object.defineProperty()")}}</dt> - <dd>Añade la propiedad nombrada descrita por un descriptor dado a un objeto.</dd> - <dt>{{jsxref("Object.defineProperties()")}}</dt> - <dd>Agrega las propiedades nombradas descritas por los descriptores dados a un objeto.</dd> - <dt>{{jsxref("Object.entries()")}}</dt> - <dd>Returns an array containing all of the <code>[key, value]</code> pairs of a given object's <strong>own</strong> enumerable string properties.</dd> - <dt>{{jsxref("Object.freeze()")}}</dt> - <dd>Freezes an object: other code can't delete or change any properties.</dd> - <dt>{{jsxref("Object.fromEntries()")}}</dt> - <dd>Returns a new object from an iterable of key-value pairs (reverses {{jsxref("Object.entries")}}).</dd> - <dt>{{jsxref("Object.getOwnPropertyDescriptor()")}}</dt> - <dd>Returns a property descriptor for a named property on an object.</dd> - <dt>{{jsxref("Object.getOwnPropertyDescriptors()")}}</dt> - <dd>Returns an object containing all own property descriptors for an object.</dd> - <dt>{{jsxref("Object.getOwnPropertyNames()")}}</dt> - <dd>Returns an array containing the names of all of the given object's <strong>own</strong> enumerable and non-enumerable properties.</dd> - <dt>{{jsxref("Object.getOwnPropertySymbols()")}}</dt> - <dd>Returns an array of all symbol properties found directly upon a given object.</dd> - <dt>{{jsxref("Object.getPrototypeOf()")}}</dt> - <dd>Returns the prototype of the specified object.</dd> - <dt>{{jsxref("Object.is()")}}</dt> - <dd>Compares if two values are the same value. Equates all NaN values (which differs from both Abstract Equality Comparison and Strict Equality Comparison).</dd> - <dt>{{jsxref("Object.isExtensible()")}}</dt> - <dd>Determines if extending of an object is allowed.</dd> - <dt>{{jsxref("Object.isFrozen()")}}</dt> - <dd>Determines if an object was frozen.</dd> - <dt>{{jsxref("Object.isSealed()")}}</dt> - <dd>Determines if an object is sealed.</dd> - <dt>{{jsxref("Object.keys()")}}</dt> - <dd>Returns an array containing the names of all of the given object's <strong>own</strong> enumerable string properties.</dd> - <dt>{{jsxref("Object.preventExtensions()")}}</dt> - <dd>Prevents any extensions of an object.</dd> - <dt>{{jsxref("Object.seal()")}}</dt> - <dd>Prevents other code from deleting properties of an object.</dd> - <dt>{{jsxref("Object.setPrototypeOf()")}}</dt> - <dd>Sets the prototype (i.e., the internal <code>[[Prototype]]</code> property).</dd> - <dt>{{jsxref("Object.values()")}}</dt> - <dd>Returns an array containing the values that correspond to all of a given object's <strong>own</strong> enumerable string properties.</dd> -</dl> - -<h2 id="Object_instances_and_Object_prototype_object"><code>Object</code> instances and <code>Object</code> prototype object</h2> - -<p>All objects in JavaScript are descended from <code>Object</code>; all objects inherit methods and properties from {{jsxref("Object.prototype")}}, although they may be overridden. For example, other constructors' prototypes override the <code>constructor</code> property and provide their own <code>toString()</code> methods. Changes to the <code>Object</code> prototype object are propagated to all objects unless the properties and methods subject to those changes are overridden further along the prototype chain.</p> - -<h3 id="Properties">Properties</h3> - -<div>{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Properties') }}</div> - -<h3 id="Methods">Methods</h3> - -<div>{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Methods') }}</div> - -<h2 id="Deleting_a_property_from_an_object">Deleting a property from an object</h2> - -<p>There isn't any method in an Object itself to delete its own properties (e.g. like <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete">Map.prototype.delete()</a></code>). To do so one has to use the <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete">delete operator</a>.</p> - -<h2 id="Examples">Examples</h2> - -<h3 id="Using_Object_given_undefined_and_null_types">Using <code>Object</code> given <code>undefined</code> and <code>null</code> types</h3> - -<p>The following examples store an empty <code>Object</code> object in <code>o</code>:</p> - -<pre class="brush: js notranslate">var o = new Object(); -</pre> - -<pre class="brush: js notranslate">var o = new Object(undefined); -</pre> - -<pre class="brush: js notranslate">var o = new Object(null); -</pre> - -<h3 id="Using_Object_to_create_Boolean_objects">Using <code>Object</code> to create <code>Boolean</code> objects</h3> - -<p>The following examples store {{jsxref("Boolean")}} objects in <code>o</code>:</p> - -<pre class="brush: js notranslate">// equivalent to o = new Boolean(true); -var o = new Object(true); -</pre> - -<pre class="brush: js notranslate">// equivalent to o = new Boolean(false); -var o = new Object(Boolean()); -</pre> - -<h2 id="Specifications">Specifications</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Initial definition. Implemented in JavaScript 1.0.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.2', 'Object')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-object-objects', 'Object')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Added Object.assign, Object.getOwnPropertySymbols, Object.setPrototypeOf, Object.is</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td>Added Object.entries, Object.values and Object.getOwnPropertyDescriptors.</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Object")}}</p> -</div> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer">Object initializer</a></li> -</ul> 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). |