向字符串添加自定义属性

Add custom property to string

本文关键字:自定义属性 添加 字符串      更新时间:2023-09-26

我经常使用函数元属性,例如:

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

为什么?如何解决?

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

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

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

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

请记住,typeof将不再给你"string"作为结果。现在是"object"

我个人认为,如果你需要存储比字符串本身更多的东西,然后在知道对象是由字符串和元数据组成的情况下使用它,我会创建一个自定义构造函数。