<script type="text/javascript">
var Page={
//开发环境
host:"localhost:8080/webgame1/",
//运行环境
//host:"42.120.16.151:8080/webgame1/",
webHost:"http://"+Page.host,
chatHost:"ws://"+Page.host+"ChatServlet.do?channelId=",
type:"POST",
dataType:"json",
gameId:"",
//返回数据
returnData:"",
currentPage:"",
asyncProcess:function(_url,_data,_callback){
$.ajax({
type:this.type,
url:_url,
dataType:this.dataType,
data:_data,
success:_callback,
});
}
}
$(document).ready(function(){
alert(Page.webHost);
});
</script>
为什么打印出来的是undefined呢?这个问题导致我发异步请求的时候是错误的路径。

解决方案 »

  1.   

    var Page = {
    //...
        host: "localhost:8080/webgame1/",    //webHost:"http://"+Page.host, /*TypeError: Page is undefined*/    webHost:"http://localhost:8080/webgame1/", // 硬编码或使用getWebHost方法
        getWebHost: function(){return "http://" + this.host},
        //...
    }alert(Page.webHost)
    alert(Page.getWebHost())
      

  2.   

    host没有声明,改成new的吧。
    var Page = function()
    {
        this.host = ..;
        this.data = ...;
        this.webHost = this.host + 'http'.....
    }var page = new Page();
      

  3.   

    不想改成构造函数使用的话,就将host变成全局变量,直接在外面定义就是了你如果就是要这么绕的写在Page中,又不想变成构造函数来使用,将host改成如下定义方式,然后将后面的Page.host统统替换成pagehost
    host:function(){
            var a="localhost:8080/webgame1/";
            window.pagehost=a;
            return a;
    }(),
      

  4.   

    能讲一下原理吗?为什么我这样写的时候说host未定义呢?
    host: "localhost:8080/webgame1/",  webHost:"http://"+this.host,
    但是使用getWebHost()方法就能取啊?
      

  5.   

    直接使用this.host时,this指向window而非指向Page。你可以在Page之外定义一个host="";然后在Page中就可以使用this.host或者直接host都可以访问将webHost变成一个方法,
    webHost:function(){
            return "http://"+this.host
    }
    再调用时,其内部this将指向Page
      

  6.   


    这是javascript的基础问题,crying_boy已经解答了,不过我建议你有时间的话,认真学习一下原生javascript。看下这个帖子,或许对你有所启示:http://topic.csdn.net/u/20120912/10/ad32ebff-5f34-4f75-8cb7-dd9597dc1661.html