`Document.location.href` 和 `.replace()` 方法在 JavaScript 中都用于与浏览器的当前文档位置(URL)进行交互,但它们之间存在一些关键区别。
### `Document.location.href`
`Document.location.href` 是一个字符串,它表示当前页面的完整 URL。你可以直接设置这个属性的值来改变当前页面的 URL,这通常会导致浏览器加载并显示新 URL 指向的页面。
**示例代码**:
// 假设当前页面是 http://example.com
document.location.href = 'https://www.google.com';
// 这将导致浏览器加载并显示 Google 的主页
### `.replace()` 方法
`.replace()` 方法是 `Location` 对象的一个方法,它接受一个 URL 字符串作为参数,并用它来替换当前页面的 URL,而不会将当前页面添加到浏览历史记录中。这意味着用户无法通过浏览器的“后退”按钮返回到原始页面。
**示例代码**:
// 假设当前页面是 http://example.com
window.location.replace('https://www.google.com');
// 这同样会导致浏览器加载并显示 Google 的主页,但用户不能通过“后退”回到 example.com
### 区别总结
- **历史记录**:`Document.location.href` 的更改会保留当前页面的历史记录,允许用户通过“后退”按钮返回到该页面。而 `.replace()` 方法会替换当前页面的 URL 并从浏览历史中删除当前页面,用户无法通过“后退”回到该页面。
- **使用方式**:虽然 `Document.location.href` 看起来像是一个属性,但实际上你可以像设置属性一样设置它的值来改变 URL。`.replace()` 则是一个方法,需要显式调用并传入新的 URL 作为参数。
这两种方式在需要根据用户操作改变页面时非常有用,但选择哪一种取决于你是否希望用户能够返回到原始页面。