Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我从window.location保存的变量正在更改?_Javascript_History.js - Fatal编程技术网

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"