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