gpt4 book ai didi

javascript - 将原始字符串更改为字符串对象引用

转载 作者:行者123 更新时间:2023-11-30 11:57:39 25 4
gpt4 key购买 nike

忽略所有最佳实践,出于好奇,我有一个相当学术的问题。

如您所知,您可以向字符串对象添加自定义属性:

var s = new String("initial string");
var s.customProperty = "Please Don't Forget about me";

是否可以(不创建新的字符串对象)更改 "s" 引用的字符串基元?

具体来说,我想更改 "s"(上文),以便 s == "new string",但在进行此更改后,我想要 s.customProperty 仍然指向字符串基元:“请不要忘记我”。同样,我想在无需创建任何新字符串对象的情况下实现这一目标。

var s = new String("initial string");
var s.customProperty = "Please Don't Forget about me";

// What code must preceed the following "if statement" in order
// for it to return "true" (giving the restrictions I described
// in the paragraphs of this post)?

if(s == "new string" && s.customProperty == "Please Don't Forget about me")
{
console.log("true");
}
else
{
console.log("false");
}

换句话说,是否可以在不丢失或克隆已添加到该字符串对象的所有自定义属性的情况下更改字符串对象的引用指针?

最佳答案

Is it possible to change the string-primitive that a "s" references?

没有。 [[StringData]] (ES6)/[[PrimitiveValue]] (ES5) 它包含一个 internal slot并且不能突变。

… without having to create any new string objects.

没有办法解决这个问题。

你可以做的是继承 String 并覆盖所有方法以引用可变属性,但该建议与“不要使用 String”一样好对象”。另请参阅反问题的答案 Is there a way to Object.freeze() a JavaScript Date? .

关于javascript - 将原始字符串更改为字符串对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37482824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com