解决方案 »

  1.   

    this不是说你声明在哪个function就是指那个作用域。
    this要看你的function是怎样被使用的
    您的例子中,
    Calendar();
    显然,this被指到了window上
    so,会报undefine错误的
      

  2.   

    当你在new 一个对象的时候,其实就是去new 构造函数,而this 的指向便是 new 出来的对象也就是说当你创建新对象时,同时调用一下bindData
      

  3.   

    function Calendar()
    {
    if(this.constructor!=Calendar){
    new Calendar();
    }
        this.bindData();
    }
    //原型方法
    Calendar.prototype.bindData=function(){
        alert("bindData");
    }
    Calendar();
    你那样this指向的是window  所以方法无效
      

  4.   

    我是仿照别个写的、用Firebug看了下。我的是指向window,但他的为什么是指向的方法?是可以设置吗?
      

  5.   

    因为他写错了,或漏写了new
    new Calendar();
      

  6.   

    但他运行时没报错。
    http://test.yikeba.com/travel/templetview_n1.aspx?para=tgt0514042800094&day=2014-5-1
    这个网址的templetview_n1.js这个文件里第859行。
      

  7.   

    我只看到174行
    var calendar = new Calendar( data ); //fidate 没看到Calendar( data );
      

  8.   

    有关this的作用域的一个小例子。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta content="text/html; charset=gb2312" http-equiv="Content-Type">
    </head>
    <body>
            <div align='center' id="ttt"></div>
    <script>
    Object.prototype.setname=function(){this.fff='1';}
    function Calendar ()
    {
    alert(this);
    this.fff='2';
    this.setname();
    }
    Calendar();
    var b = new Calendar();
    alert(window.fff+" | "+Calendar.fff+" | "+b.fff);
    </script>
            
        </body>
    </html>
      

  9.   

    看看js高级程序设计  P597  作用域的安全构造函数  楼上的已经说的很好了