Javascript 为什么我从window.location保存的变量正在更改?
我将Javascript 为什么我从window.location保存的变量正在更改?,javascript,history.js,Javascript,History.js,我将window.location保存到一个变量中,但是当window.location更改时(History.js),我的变量也会更改,为什么?我不会在任何地方设置变量,除非在第一页请求上 (function(){ var myvar = window.location; History.Adapter.bind(window, 'statechange', function(){ console.log(window.location.pathname);
window.location
保存到一个变量中,但是当window.location
更改时(History.js),我的变量也会更改,为什么?我不会在任何地方设置变量,除非在第一页请求上
(function(){
var myvar = window.location;
History.Adapter.bind(window, 'statechange', function(){
console.log(window.location.pathname);
console.log(myvar.pathname); // same as window.location.pathname but should be saved data from line 2
var state = History.getState(),
options = {
url: state.url,
type: 'get',
success: function(resp, status, xhr) {
$('#wrapper').html(resp);
}
};
$.extend(options, callbackOptions);
$.ajax(options);
});
$(document).on('click', 'a[data-pjax]', function(e){
e.preventDefault();
var self = $(this),
callback = self.attr('data-pjax');
History.pushState({ "callback" : callback }, 'Loading page...', self.attr('href'));
});
})();
我加载页面和当前的位置。路径名/foo
,我单击pjax链接,我的新url是/bar
。当我这样做时,myvar
为什么会改变?我没有更改变量的代码
位置
是对对象的引用。将其值指定给某个对象时,即指定了引用。对对象的更改将从对该对象的所有引用中可见
如果您想保留它以前的状态,那么您需要复制不可变的值。您似乎只关心路径名
,这是一个字符串
…因此,将其存储起来
位置
是对对象的引用。将其值指定给某个对象时,即指定了引用。对对象的更改将从对该对象的所有引用中可见
如果您想保留它以前的状态,那么您需要复制不可变的值。您似乎只关心路径名
,这是一个字符串
…因此,将其存储起来
typeof window.location
"object"
typeof window.location.pathname
"string"