我经常使用函数元属性,即像这样
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
为什么以及如何解决这个问题?
答案 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"
。
就个人而言,如果您需要存储多个字符串本身,然后使用它,并且知道该对象由您的字符串和元数据组成,我就创建一个自定义构造函数。