0

例如,我试图隔离 window.location 的前 5 个字符。

var ltype, string = 'string';
console.log(window.location);         // file:///C:/for example
console.log(typeof window.location);  // [OBJECT] 
lType=window.location.substr(0,5);    // 'not a function' (quite so)
string=window.location;
lType=string.substr(0,5);             // fails similarly

Q1:我可以以某种方式将 substr() 绑定到 window.location 吗?

我可以看到它string=window.location复制了一个引用而不是一个值,所以

Q2:如何创建复杂结构(例如对象或数组)的单独离散副本[不使用JSON.stringify()JSON.parse()-这是我目前正在使用的]?

4

2 回答 2

2

尝试

string = window.location.href.toString();

代替

string=window.location;

因为 window.location 将返回对象而不是字符串。

于 2013-06-28T05:20:20.163 回答
1

window.location 是一个 object,所以你不能在它上面使用字符串函数——你已经注意到了。为了将实际位置作为字符串获取(对其执行字符串操作),您需要以某种方式将其转换为字符串。

  • window.location.href是对象本身提供的属性。
  • window.location.toString()是所有 JavaScript 对象的方法,在这里被覆盖。

但是,请注意XY 问题。在我看来,您正在尝试检索http:URI 的协议(位)。也有一个属性 - window.location.protocol

lType = window.location.protocol;

你应该使用它 - 它更健壮(考虑https://或更糟,ftp://......)。

于 2013-06-28T05:25:47.450 回答