6
低於Firefox和Chrome的控制檯發生了什麼見:爲什麼JavaScript不允許在函數上分配屬性「名稱」?
> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1
爲什麼f.name = 'f'
是一個空操作?
低於Firefox和Chrome的控制檯發生了什麼見:爲什麼JavaScript不允許在函數上分配屬性「名稱」?
> var f = function() {}
undefined
> f.name = 'f'
"f"
> f.name
""
> f.id = 1
1
> f.id
1
爲什麼f.name = 'f'
是一個空操作?
可能取決於實施。
在某些實現中,函數對象的name
屬性用作函數的名稱(如果它有一個)。在這些情況下,這可能是隻讀的。
這是一個非標準功能。
例如:
var foo = function bar() {};
alert(foo.name); // will give "bar" in some cases.
在Firefox和Chrome,如果我嘗試修改它,它不會改變......
var foo = function bar() {};
foo.name = "baz";
alert(foo.name); // still "bar" in Firefox and Chrome
name
財產。這裏有一些關鍵點從文檔...
「非標準」
「的名稱屬性返回一個函數的名稱,或空字符串爲匿名函數「
」您不能更改函數的名稱,此屬性爲只讀「
在IE9中正常工作。 – 2012-07-14 18:52:49