admin管理员组

文章数量:1332395

See below for what happened in Firefox and Chrome's console:

> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1

Why f.name = 'f' is a no-op?

See below for what happened in Firefox and Chrome's console:

> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1

Why f.name = 'f' is a no-op?

Share Improve this question edited Jul 14, 2012 at 18:57 user166390 asked Jul 14, 2012 at 18:51 powerboypowerboy 11k21 gold badges64 silver badges94 bronze badges 0
Add a ment  | 

1 Answer 1

Reset to default 12

Probably depends on the implementation.

In some implementations, the name property of a function object is used as the function's name if it has one. This is likely read-only in these cases.

This is a non-standard feature.

for example:

var foo = function bar() {};

alert(foo.name); // will give "bar" in some cases. 

In Firefox and Chrome, if I try to modify it, it won't change...

var foo = function bar() {};

foo.name = "baz";
alert(foo.name); // still "bar" in Firefox and Chrome

  • MDN docs for the name property.

Here are some key points from the docs...

"Non-standard"

"The name property returns the name of a function, or an empty string for anonymous functions"

"You cannot change the name of a function, this property is read-only"

本文标签: propertiesWhy doesn39t JavaScript allow assigning the property quotnamequot on a FunctionStack Overflow