Chrome和Safari在Javascript中的奇怪行为

时间:2010-06-11 13:25:47

标签: javascript google-chrome safari

我写了这段代码的和平:

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”属性。你知道为什么吗?但最重要的是,你知道解决方法吗?

5 个答案:

答案 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"};

可能是一个解决方案。

相关问题