开发者

Chrome and Safari strange behaviour in Javascript

I've written this peace of code:

var a=function(){
};

a.name="test";
a.prop="test2";

Now if I debug the code with the console:

console.log(a.name);
console.log(a.prop);

In Firefox i get 开发者_如何学JAVAa.name="test" and a.prop="test2", while in Safari and Chrome i get a.prop="test2" but a.name="".

It seems that there's no way to assign a "name" property on a function in Webkit browsers. Do you know why? But the most important thing is, do you know a workaround for that?


Function instances have a non-standard name attribute which will return the name of the function, or an empty string if the function is anonymous (like yours). Browsers will react differently when you try to write to the attribute, so I suggest using another property-name.


Some words are reserved in JS but some browsers still support them.

Take a look here : http://www.quackit.com/javascript/javascript_reserved_words.cfm


why are you trying to assign properties to method? that seems like it should be a violation of some procedure or practice. if you want both a method and properties available, make a new object to contain them.


It appears that you can't change the name of an anonymous/lambda function. If you'd like to set the name, you need to do something like var a=function b() {} then you can set the name.


As you can see, "name" is not an option, so:

var a = function(){
};


a.props={name:"test",prop:"test2",anyKey:"anyValue"};

may be a solution.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜