如何访问或复制对象的字符串值?

时间:2013-06-28 04:59:13

标签: javascript object

例如,我试图隔离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() - 这是什么我现在正在诉诸]?

2 个答案:

答案 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:// ...)。