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

Function.name - 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

Function.name

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since agosto de 2016.

La propiedad function.name retorna el nombre de la funcin o retorna "anonymous" por funciones creadas annimamente.

Atributos de la propiedad Function.name
SobrescribirNo
NumerableNo
ConfigurableS

Ntese que en implementaciones no estndar previas a ES2015 el atributo configurable tambin era false.

In this article

Descripcin

Nombre de una declaracin de funcin

La propiedad name retorna el nombre de una declaracin de funcin.

js
function doSomething() {}

console.log(doSomething.name); // imprime en pantalla "doSomething"

Nombre de constructor de funcin

Las funciones creadas con la sintaxis new Function(...) o simplemente Function(...) tienen como propiedad name una cadena vaca. En los ejemplos a continuacin se crean funciones annimas, tales que su name retorna una cadena vaca:

js
var f = function () {};
var object = {
  someMethod: function () {},
};

console.log(f.name == ""); // true
console.log(object.someMethod.name == ""); // tambin true

Nombres de funcin inferidos

Los navegadores que implementan funciones ES2015 pueden inferir el nombre de una funcin annima de su posicin sintctica. Por ejemplo:

js
var f = function () {};
console.log(f.name); // "f"

Se puede definir una funcin con un nombre en un function expression:

js
var object = {
  someMethod: function object_someMethod() {},
};
console.log(object.someMethod.name); // imprime "object_someMethod"

try {
  object_someMethod;
} catch (e) {
  console.log(e);
}
// ReferenceError: object_someMethod is not defined

No se puede cambiar el nombre de una funcin, esta propiedad es de solo lectura:

js
var object = {
  // anonymous
  someMethod: function () {},
};

object.someMethod.name = "someMethod";
console.log(object.someMethod.name); // cadena vaca, someMethod es annimo

Sin embargo, se puede usar Object.defineProperty() para cambiarlo.

Nombres de mtodos

js
var o = {
  foo() {},
};
o.foo.name; // "foo";

Nombres de funciones atadas (creadas con .bind())

Function.bind() produce una funcin cuyo nombre es igual a "bound " seguido del nombre de la funcin original.

js
function foo() {}
foo.bind({}).name; // "bound foo"

Nombres de funciones getters y setters

Cuando se usan get y set,"get" y "set" aparecern en el nombre de la funcin.

js
var o = {
  get foo() {},
  set foo(x) {},
};

var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
descriptor.get.name; // "get foo"
descriptor.set.name; // "set foo";

Ejemplos

Se puede usar obj.constructor.name para saber cul es la "clase" de un objeto:

js
function a() {}

var b = new a();

console.log(b.constructor.name); // imprime "a"

Especificaciones

Specification
ECMAScript 2027 LanguageSpecification
# sec-function-instances-name

Compatibilidad con navegadores


Web Proxy Viewer  |  New URL  |  Original Page