最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - Add custom property to string - Stack Overflow

matteradmin8PV0评论

I often use function meta properties, i.e. like this

var func = function(){}
func.meta = "meta";
console.log(func);//output: function func()
console.log(func.meta);//output: "meta"

But when I tried using strings in similar way, it did't work.

var string = "string";
string.meta = "meta";
console.log(string);//output: "string"
console.log(string.meta);//output: undefined

Why and how to fix that?

I often use function meta properties, i.e. like this

var func = function(){}
func.meta = "meta";
console.log(func);//output: function func()
console.log(func.meta);//output: "meta"

But when I tried using strings in similar way, it did't work.

var string = "string";
string.meta = "meta";
console.log(string);//output: "string"
console.log(string.meta);//output: undefined

Why and how to fix that?

Share Improve this question asked Aug 27, 2015 at 15:50 setecsetec 16.2k3 gold badges38 silver badges51 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

Your string is a primitive value. It accepts the property because of some magic which temporarily converts it to an object (or you can think of it that way). So the assignment isn't useful after that.

You could use the new String constructor to create an object you can actually hold on to, but that's very unusual for JavaScript.

var string = new String("string");
string.meta = "meta";
console.log(string);
console.log(string.meta);//output: "meta"

The console output on the string itself will actually probably not show what you want, but in practice it should work in concatenation as such.

Keep in mind that typeof will no longer give you "string" as a result. It will now be "object".

Personally, I'd just create a custom constructor if you need to store more than the string itself and then use it with the knowledge that the object is posed of your string and the meta data.

Post a comment

comment list (0)

  1. No comments so far