非标准
该特性是非标准的,请尽量不要在生产环境中使用它!
概述
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) |