[toc]
## 查看当前location对象
```
console.log(location);
```
![](https://box.kancloud.cn/53eca8fcbbfd976ca7e375661d94f6f1_338x291.png)
```
function showLoc() {
var oLocation = window.location, aLog = ["Property (Typeof): Value", "window.location (" + (typeof oLocation) + "): " + oLocation ];
for (var sProp in oLocation){
aLog.push(sProp + " (" + (typeof oLocation[sProp]) + "): " + (oLocation[sProp] || "n/a"));
}
alert(aLog.join("\n"));
}
showLoc();
```
## location和location.href和location.assign()
MDN文档中说`window.location`这货是个只读属性,但又说这货可以被赋值。。。
emmm...你别听它的
除此之外`window.location=`和`window.location.href=`和`window.location.assign()`是等价的
### href支持hash
且如果赋的是一个hash值(比如`#123`),它会自动识别,并在原本的location地址末尾追加上(`原先的地址#123`)
## location.reload:强制从服务器重新加载当前页面
```
window.location.reload(true);
```
## location.replace
```
function reloadPageWithHash() {
var initialPage = window.location.pathname;
window.location.replace('http://example.com/#' + initialPage);
}
```
## location.search:向当前服务器地址发送query
![](https://box.kancloud.cn/c734e64bbca2af456680a153c779b245_538x128.png)
```
function sendData (sData) {
window.location.search = sData;
}
```
### 封装一个query对象
```
var oGetVars = {};
if (window.location.search.length > 1) {
for (var aItKey, nKeyId = 0, aCouples = window.location.search.substr(1).split("&"); nKeyId < aCouples.length; nKeyId++) {
aItKey = aCouples[nKeyId].split("=");
oGetVars[decodeURIComponent(aItKey[0])] = aItKey.length > 1 ? decodeURIComponent(aItKey[1]) : "";
}
}
// alert(oGetVars.yourVar);
```
同样可以通过一个匿名构造函数来获取,这样只声明了一个全局变量。
```
var oGetVars = new (function (sSearch) {
if (sSearch.length > 1) {
for (var aItKey, nKeyId = 0, aCouples = sSearch.substr(1).split("&"); nKeyId < aCouples.length; nKeyId++) {
aItKey = aCouples[nKeyId].split("=");
this[decodeURIComponent(aItKey[0])] = aItKey.length > 1 ? decodeURIComponent(aItKey[1]) : "";
}
}
})(window.location.search);
// alert(oGetVars.yourVar);
```
### 获取query对象中的键值
```
function loadPageVar (sVar) {
return decodeURI(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURI(sVar).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
alert(loadPageVar("name"));
```
### 更多请查看MDN
case 8: ...
[MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/location)
- 空白目录
- window
- location
- history
- DOM
- 什么是DOM
- JS盒子模型
- 13个核心属性
- DOM优化
- 回流与重绘
- 未整理
- 文档碎片
- DOM映射机制
- DOM库封装
- 事件
- 功能组件
- table
- 图片延迟加载
- 跑马灯
- 回到顶部
- 选项卡
- 鼠标跟随
- 放大镜
- 搜索
- 多级菜单
- 拖拽
- 瀑布流
- 数据类型的核心操作原理
- 变量提升
- 闭包(scope)
- this
- 练习题
- 各种数据类型下的常用方法
- JSON
- 数组
- object
- oop
- 单例模式
- 高级单例模式
- JS中常用的内置类
- 基于面向对象创建数据值
- 原型和原型链
- 可枚举和不可枚举
- Object.create
- 继承的六种方式
- ES6下一代js标准
- babel
- 箭头函数
- 对象
- es6勉强笔记
- 流程控制
- switch
- Ajax
- eval和()括号表达式
- 异常信息捕获
- 逻辑与和或以及前后自增
- JS中的异步编程思想
- 上云
- 优化技巧
- 跨域与JSONP
- 其它跨域相关问题
- console
- HTML、XHTML、XML
- jQuery
- zepto
- 方法重写和方法重载
- 移动端
- 响应式布局开发基础
- 项目一:创意简历