我写了这段代码的和平:
var a=function(){
};
a.name="test";
a.prop="test2";
现在,如果我使用控制台调试代码:
console.log(a.name);
console.log(a.prop);
在Firefox中,我得到a.name="test"
和a.prop="test2"
,而在Safari和Chrome中,我获得a.prop="test2"
但a.name=""
。
似乎无法在Webkit浏览器中为函数指定“name”属性。你知道为什么吗?但最重要的是,你知道解决方法吗?
答案 0 :(得分:6)
函数实例具有非标准name
属性,该属性将返回函数的名称,如果函数是匿名的(如您的),则返回空字符串。当您尝试写入属性时,浏览器会有不同的反应,所以我建议使用另一个属性名称。
答案 1 :(得分:0)
JS中保留了一些单词,但有些浏览器仍然支持它们。
看看这里:http://www.quackit.com/javascript/javascript_reserved_words.cfm
答案 2 :(得分:0)
为什么要尝试为方法分配属性?这似乎应该违反某些程序或做法。如果您希望方法和属性都可用,请创建一个新对象来包含它们。
答案 3 :(得分:0)
您似乎无法更改匿名/ lambda函数的名称。如果您想设置名称,则需要执行var a=function b() {}
之类的操作,然后您可以设置名称。
答案 4 :(得分:0)
如您所见,“名称”不是一个选项,因此:
var a = function(){
};
a.props={name:"test",prop:"test2",anyKey:"anyValue"};
可能是一个解决方案。