--- 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 ---
Properti function.name mengembalikan nama fungsi.
configurable juga false.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()")}}.
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 | Status | Comment |
|---|---|---|
| {{SpecName('ES6', '#sec-name', 'name')}} | {{Spec2('ES6')}} | Initial definition. |
| {{SpecName('ESDraft', '#sec-name', 'name')}} | {{Spec2('ESDraft')}} |
| 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)}}.