Reputation: 19231
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 a.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?
Upvotes: 2
Views: 523
Reputation: 11
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.
Upvotes: 0
Reputation: 51807
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.
Upvotes: 0
Reputation: 11238
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.
Upvotes: 0
Reputation: 111910
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.
Upvotes: 6
Reputation: 2549
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
Upvotes: 0