例如,我试图隔离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()
- 这是什么我现在正在诉诸]?
答案 0 :(得分:2)
试
string = window.location.href.toString();
而不是
string=window.location;
因为window.location将返回对象而不是字符串。
答案 1 :(得分:1)
window.location
is an object,因此您无法使用字符串函数 - 正如您所注意到的那样。为了将实际位置作为字符串(对其执行字符串操作),您需要以某种方式将其转换为字符串。
window.location.href
是对象本身提供的属性。window.location.toString()
是所有JavaScript对象的方法,在此处重写。但是, 要小心XY problem 。在我看来,您正在尝试检索URI的协议(http:
位)。也有一个属性 - window.location.protocol
。
lType = window.location.protocol;
你应该使用它 - 它更健壮(考虑https://
或更糟糕的是,ftp://
...)。