--- title: Function.name slug: Web/JavaScript/Reference/Global_Objects/Function/name tags: - ECMAScript6 - Function - JavaScript - Property translation_of: Web/JavaScript/Reference/Global_Objects/Function/name ---
{{JSRef}}

Properti function.name mengembalikan nama fungsi.

{{js_property_attributes(0,0,1)}}
Perlu di ingat bahwa ini di dalam non-standard, implementasi pre-ES6 atribut configurable juga false.

Deskripsi

Properti name property mengembalikan nama sebuah fungsi , atau (sebelum implementasi ES6) string kosong untuk anonymous functions:

function doSomething() {}

console.log(doSomething.name); // logs "doSomething"

Fungsi di buat menggunakan sintaks new Function(...) atau hanya Function(...) memiliki properti name di set empty string. Pada contoh anonymous functions dibuat, sehingga name mengembalikan empty string:

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

console.log(f.name == ''); // true
console.log(object.someMethod.name == ''); // also true

Browser yang mengimplementasikan fungsi ES6 mengambil nama dari anonymous function dari posisi syntactic-nya. Contoh:

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

Anda bisa mendefinisikan sebuah fungsi dengan nama di {{jsxref("Operators/Function", "function expression", "", 1)}}:

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

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

Anda tidak bisa mengubah nama fungsi, Properti ini hanya bisa dibaca:

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

object.someMethod.name = 'someMethod';
console.log(object.someMethod.name); // empty string, someMethod is anonymous

Untuk mengubah, anda perlu menggunakan {{jsxref("Object.defineProperty()")}}.

Contoh

Anda bisa menggunakan obj.constructor.name untuk memeriksa "class" dari sebuah objek:

function a() {}

var b = new a();

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

Spesifikasi

Spesifikasi Status Comment
{{SpecName('ES6', '#sec-name', 'name')}} {{Spec2('ES6')}} Initial definition.
{{SpecName('ESDraft', '#sec-name', 'name')}} {{Spec2('ESDraft')}}  

Kompabilitas browser

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatChrome(33.0)}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Configurable: true {{CompatChrome(43.0)}} {{CompatGeckoDesktop(38)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Inferred names on anonymous functions {{CompatChrome(51.0)}} {{CompatNo}} [1] {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Configurable: true {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoMobile(38)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Inferred names on anonymous functions {{CompatNo}} {{CompatChrome(51.0)}} {{CompatNo}} [1] {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatChrome(51.0)}}

[1] See {{bug(883377)}}.