添加自定义属性到字符串

时间:2015-08-27 15:50:39

标签: javascript

我经常使用函数元属性,即像这样

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

但是当我尝试以类似的方式使用字符串时,它确实无法正常工作。

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

为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您的字符串是原始值。它接受属性是因为有一些魔法暂时将它转换为一个对象(或者你可以这样想)。因此,在此之后,作业并不有用。

您可以使用new String构造函数创建一个您可以实际掌握的对象,但这对于JavaScript来说非常不寻常。

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

string本身的控制台输出实际上可能无法显示您想要的内容,但实际上它应该在串联中工作。

请注意,typeof将不再为您提供"string"。它现在是"object"

就个人而言,如果您需要存储多个字符串本身,然后使用它,并且知道该对象由您的字符串和元数据组成,我就创建一个自定义构造函数。