Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Function.name

非标准
该特性是非标准的,请尽量不要在生产环境中使用它!

概述

name 属性返回所属函数的函数名称.

描述

name 属性返回一个函数的名称, 如果是匿名函数, 则返回空字符串:

function doSomething() { }

alert(doSomething.name); // 弹出 "doSomething" 

下面的例子创建了两个匿名函数, 它们的 name 属性都返回空字符串.:

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

alert(f.name == ""); // true
alert(object.someMethod.name == ""); // true

使用语法new Function(...)或者直接 Function(...) 可以创建一个匿名函数, 在Firefox 和 Safari上, 该函数的 name 属性赋值为 "anonymous", 在 Chrome 和 Opera 上,该函数的 name 属性为一个空字符串, IE不支持 name 属性.

函数表达式 中, 你可以指定函数的名称:

var object = {
  someMethod: function object_someMethod() {}
};
alert(object.someMethod.name); // 弹出 "object_someMethod"

try { object_someMethod } catch(e) { alert(e); }
// ReferenceError: object_someMethod is not defined

你不能改变一个函数的 name 属性的值, 因为该属性是只读的:

var object = {
  // someMethod 属性指向一个匿名函数
  someMethod: function() { }
};

object.someMethod.name = "someMethod";
alert(object.someMethod.name); // 弹出空字符串, name属性是只读的.

示例

你可以使用 obj.constructor.name 来查看一个对象所属的"类"的名称:

function A() { }

var b = new A();

alert(b.constructor.name); //Alerts "A"

规范

不在任何规范中.

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) 未实现 (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) 未实现 (Yes) (Yes)

 

文档标签和贡献者

 此页面的贡献者: teoli, ziyunfei
 最后编辑者: teoli,