Javascript 在js中设置字符串属性
是否可以在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
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!