当前位置: 代码迷 >> Web前端 >> 老掉牙书新看之location对象
  详细解决方案

老掉牙书新看之location对象

热度:95   发布时间:2012-11-23 22:54:33.0
老书新看之location对象

最近一直研究学习和编写自己脚本库的url的相关的api,今天又兴致地有翻看期一本老书-----javascript语法和对象速查手册。其实自己一路走来,我喜欢看前端的书,看了很多这样的书,有的书很基础有的书有点深度有的书得看好几遍才明白。。。。有的人说慢慢地随着时间的流逝,你看的书就"高深"了,其实,作为我来讲,我只能支持一半的说法,是慢慢地随着你的积累和自己的研习,水平和理解力是涨了,但是时常地去翻看一下这些底层api的语法和常用对象等,加深理论还是很有必要的。(温故而知新!!)

?

不相信,考考你,

?

?

var str ="abcdef";
console.log(str.length);    //看看长度,顺从大脑步骤,呵呵
console.log(str.slice(-2,3));  //是什么? 
console.log(str.slice(-2,4));  //又是什么?
console.log(str.slice(-2,5));  //又又是什么?


/*
后话,或许你知道string的slice
或许你知道参数为负的反向查找
但是你看看上面的你会再次发现
反向查找后的如果start>=end返回是空的
*/

?

给出答案:

?

?

var str = "abcdef";
console.log(str.length);  //6

//对string.slice不熟悉的可以看看我的其他文章有介绍说明。

console.log(str.slice(-2,3));  
//是不是等于 str.slice(6-2,3);--------str.slice(4,3);  //返回空


console.log(str.slice(-2,4));
//是不是等于str.slice(6-2,4); ----------str.slice(4,4); //返回空


console.log(str.slice(-2,5));
//是不是等于str.slice(6-2,5);  ---------str.slice(4,5); //返回"e"

?

拉回来,继续写我的要点。今天其实想仔细地给大家说说这个location对象。它到底有什么属性和方法,或者说我们能不能从它生成去吸收一些东西。

?

?

?

?

  • what is location?
  1. ?? ?Location对象包含了当前URL的所有信息
  2. ?? ?它是Window对象的一个属性
  3. ?? ?通过window.location属性可以访问该对象,但不能使用new 关键字去创建

?

  • ?Location对象的属性
  1. hash--------------返回从(#)开始的URL
  2. host --------------返回主机和当前URL的端口
  3. hostname---------返回当前URL的主机名
  4. href---------------返回完整的URL
  5. pathname-------- 返回当前URL的路径部分
  6. port---------------返回当前URL的端口号
  7. protocol----------返回当前URL的协议
  8. search------------返回从(?)开始的URL查询部分
  • Location对象的方法
  1. assign()----------加载新的文档
  2. reload()----------重新加载当前的文档
  3. replace()---------用新的文档替换当前的文档
上图说明例子我在http://www.baidu.com输入窝窝团然后调整到
http://www.baidu.com/s?wd=%CE%D1%CE%D1%CD%C5&rsv_bp=0&rsv_spt=3&oq=%CE%D1%CE%D1&rsp=0&f=3&inputT=4282



?

总结一下吧:

  1. 我建议你写location.href 而不是window.location.href,对象成员嵌套不要很深,访问速度会慢
  2. 应该没有人会用window.location.href.toString()吧??有的属性不是对象的实例属性,解析的时候需要搜索原型链,这样的时间效率比较低
  3. 关于location.reload于location.replace的区别??这个我在这边就不细说可以看看我贴出的链接

http://blog.csdn.net/fangxinggood/article/details/604916
http://www.jb51.net/article/21573.htm

1 楼 walldr2161 2011-10-16  
  话说俺这个编程处于HELLOWORD级别的人一直是window.location.herf
2 楼 zhangyaochun 2011-10-16  
walldr2161 写道
  话说俺这个编程处于HELLOWORD级别的人一直是window.location.herf

呵呵 说的多是个人意见 仅供参考 谢谢
3 楼 yizhl 2011-10-16  
我建议你写location.href 而不是window.location.href,对象成员嵌套不要很深,访问速度会慢

不知道根据什么的初次结论 location本来就是window的对象。。。 感觉有点荒谬
4 楼 小丑鱼0703 2012-02-13  
location.href引导当前页面的跳转,不是打开新窗口。so 是不是默认为当前window对象,而不用嵌套表明是window对象的属性了呢?
5 楼 jyjava 2012-05-03  
lz给的那个连接关于location.reload和location.replace是不是有问题呢,relaod为true是从从服务端获取新的,那么它的session是不是就不会过期呢?
  相关解决方案