2013-06-28 5 views
0

Например, я пытаюсь изолировать первые 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: Могу ли я как-то 'привязать' зиЬзЬг() для window.location?

можно видеть, что string=window.location копирует ссылку, а не значение, так что

Q2: Как можно создать отдельный, дискретный копия сложной структуры, такие как объект или массив [без использования JSON.stringify() или JSON.parse() - это то, к чему я сейчас прибегаю]?

+0

Скопировать объект: http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object –

+0

Получить часть строки: http://stackoverflow.com/questions/ 2243824/what-is-the-difference-between-string-slice-and-string-substring-in-javascript –

+0

'window.location.toString(). Substr (...)' должен решить вашу проблему. – mohkhan

ответ

1

window.locationis an object, поэтому вы не можете использовать строковые функции на нем - как вы заметили. Чтобы получить фактическое местоположение в виде строки (для выполнения строковых операций над ней), вам нужно каким-то образом преобразовать ее в строку.

  • window.location.href - это свойство, предоставляемое самим объектом.
  • window.location.toString() - метод на всех объектах JavaScript, переопределенный здесь.

Однако берегитесь XY problem. Мне кажется, что вы пытаетесь получить протокол (бит http:) URI. Для этого есть свойство - window.location.protocol.

lType = window.location.protocol; 

Вы должны использовать что - это более надежный (рассмотреть https:// или, что еще хуже, ftp:// ...).

+0

Отличный совет, спасибо. Нет мысли о Q2? –

+0

И когда я принимаю ваш ответ, он, похоже, не согласен с предыдущим ответом. ??? Лучше я снова прочитаю инструкцию –

+0

@MattArnold '1' Это отдельный вопрос (который, кроме того, [уже задан] (http://stackoverflow.com/questions/728360/most-elegant-way-to-clone -a-Javascript-объект)). '2' Может быть только один принятый ответ. (Mine? Довольно пожалуйста?) – michaelb958

2

попробовать

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

вместо

string=window.location; 

Поскольку window.location будет возвращать объект не строку.

+0

Совершенно верно: я попытался перечислить свойства объекта, используя знаменитый старый «showProps» exec из XUL School. По какой-то причине он не дал результата при использовании против window.location. –