Javascript 在js中设置字符串属性

Javascript 在js中设置字符串属性,javascript,string,properties,Javascript,String,Properties,是否可以在js中以某种方式将附加属性附加到字符串?我正在描绘一些类似于 var s = "Hello World"; s.x = 'bar'; console.log(s.x); 不幸的是,赋值后,s.x未定义 我知道这个问题似乎有点奇怪。毕竟,为什么要将其他属性附加到字符串?在我的例子中,推理如下:我正在使用一个(设计有问题的)库,它提供了一个函数来创建给定url的xhr请求。然后将url传递给回调函数并返回结果 将库(xhr-函数)描绘成类似于: var xhr = function(u

是否可以在js中以某种方式将附加属性附加到字符串?我正在描绘一些类似于

var s = "Hello World";
s.x = 'bar';

console.log(s.x);
不幸的是,赋值后,
s.x
未定义

我知道这个问题似乎有点奇怪。毕竟,为什么要将其他属性附加到字符串?在我的例子中,推理如下:我正在使用一个(设计有问题的)库,它提供了一个函数来创建给定url的xhr请求。然后将url传递给回调函数并返回结果

将库(
xhr
-函数)描绘成类似于:

var xhr = function(url, cb){
    $.ajax({
        url: url,
        success: function(data){
            // do library stuff

            // my code goes here
        }
    })
}
框架的一部分是,回调函数不是作为函数传递的,而是复制到成功处理程序体中。这样,我就可以访问“我的代码在这里”部分中的url参数。

现在在我的cb处理程序中,除了url之外,我还需要其他数据。有没有办法将其破解到url参数上?很遗憾,我无法更改库:(

我计划做一些类似的事情:

var xhr = function(url, cb){
    $.ajax({
        url: url,
        success: function(data){
            // do library stuff

            // my code goes here
            // access url.foo
        }
    })
}

var url = 'https://example.com'
url.foo = 'bar'
xhr(url);
根据上述问题


我仍然不建议这样做;(不完全是直观的行为)

字符串是一种基本类型,即非对象,因此不能像这样将属性附加到它们。要将道具附加到字符串,请使用concat或join.str.concat('?bar=a&baz=c')将s作为对象,而不是字符串或函数(否则,您将改变字符串的预期行为,这是意外的,而且设计有点糟糕)此外,这个问题可能与
var s = new String("hello world!");
s.x = 5;
console.log(s.x); //5
console.log(s); //[object Object]
console.log(s.toString()); //hello world!