alert(btn.onclick)显示如下:
function anonymous()
{
alert(this.id)

//这里的this表示btn这个对象,不是anonymous。this.item[this,items.length]=item
//this仍然是自身不是上级。最后的那个效果一样,但是后边的标准。

解决方案 »

  1.   

    to xinyunyishui(心云意水):
    this.item[this,items.length]=item 指的是上级,调用它的对象mMenu. 我都是这么用的。
    我就是发现这儿有这个问题,才来问题。请看我的代码。function mainMenu(img,capture,hrefurl){
    this.items=new Array();
    this.img=img;
    this.capture=capture;
    this.hrefurl=hrefurl;
    } function addSub(item){
    this.items[this.items.length]=item;
    }function subMenu(img,capture,hrefurl,target){
    this.img=img;
    this.capture=capture;
    this.hrefurl=hrefurl;
    this.target=target;
    }mainMenu.prototype.addSub=addSub;var myMenu=new mainMenu('#','收藏家','#')
        mysub=new subMenu('#','#','#','blank')
    myMenu.addSun(mysub);alert(myMenu.items.length);所以function addSub(item){
    this.items[this.items.length]=item;

    //此处的this 指的时上级mMenu,即调用者。//如果桌this值的时其 caller,
    那上面 1、2 做何解释???
      

  2.   

    就这句理解对了:“//此处的this 指的时上级mMenu,即调用者。”
    this永远指向“调用者”
      

  3.   

    this.items[this.items.length]=item
    //mainMenu对象的items[]中第this.items.length个元素赋值为item有什么难理解的吗?由于addSub是mainMenu对象的方法,所以这里的this自然指mainMenu对象
      

  4.   

    String.prototype.trim = function()
    {
        // 用正则表达式将前后空格
        // 用空字符串替代。
        return this.replace(/(^\s*)|(\s*$)/g, "");
    }此处的 this 指 String<script>
    alert(this.name) //此处 this 指的是 window .I know.
    </script>如此就可以这样理解:
    在对象中,this 代表这个对象本身
    在方法中,this代表调用该方法的对象是这样的吗???清明示
      

  5.   

    to xuzuning(唠叨) :this永远指向“调用者”
    那对于 mainMenu 这个对象,其调用这又是谁呢?是其本身??
      

  6.   

    to xuzuning(唠叨) :this永远指向“调用者”
    那对于 mainMenu 这个对象,其调用这又是谁呢?是其本身??对啊,因为使用的时候要new mainMenu
      

  7.   

    mainMenu 是一个对象构造器,用 new 就是来调用改构造器(constructor)来构造对象实例,按说,this 应该指该构造器,而不是他的实例。
      

  8.   

    myMenu=new mainMenu()  //new 调用该构造器。因该说此处调用这还是myMenu ,对吗?
    myMenu.img="aaaaa";
    myMenu.capture="bbbbb";
    myMenu.hrefurl="#"==myMenu=new mainMenu("aaaaa","bbbbb",##)  //new 调用该构造器。因该说此处调用这还是myMenu ,对吗?
      

  9.   

    var myDate=new Date("2002\12\10")
    alert(myDate.constructor);//constructor=Date  即构造器、此处,mainMenu 也是一个构造器。用构造器构造器实例(即 对象)大概也可以成为初始化过程吧
      

  10.   

    看看这个,绝对经典,绝对权威
    http://devedge.netscape.com/library/manuals/2000/javascript/1.5/guide/obj2.html
      

  11.   

    ATCG曾经多次深入讨论过这个方面,用论坛的搜索功能搜他发表过的帖子出来看看(关键字填一个空格,作者填ATCG)。http://expert.csdn.net/Expert/TopicView1.asp?id=1240474
    http://expert.csdn.net/Expert/TopicView1.asp?id=1265016
    http://expert.csdn.net/Expert/TopicView1.asp?id=1240386
    http://expert.csdn.net/Expert/TopicView1.asp?id=1251485
    http://expert.csdn.net/Expert/TopicView1.asp?id=1247222
    http://expert.csdn.net/Expert/TopicView1.asp?id=1245347
    ......
      

  12.   

    我看了一下ATCG的贴子。它的讨论还没我的深入呢。我想知道,基于原型的构造器构造函数的整个过程。constructor,function 之间的联系区别,我回去再好好研究一下 原版英文资料。有什么心得再发出来和大家共享。
      

  13.   

    呵呵,ATCG的帖子对于this这个关键字是讨论的没有你多,但是他在对象原理的讨论上还是比较深入的(不止我贴出来的那几贴)。根据我的理解,constructor是系统已经定义了的构造方法,可以认为是真正的构造方法。而function是自定义的构造方法,可以认为是模拟的构造方法。虽然一样可以new,但是其实new functionName构造的是Function的对象,调用的是Function的构造方法,之后才调用自己定义的构造方法进行自定义的初始化过程,自定义的function看成是初始化方法更合适。这个问题上的争论由来已久。资料上一般把自定义的function解释为是构造方法,我认为主要是为了方便理解,毕竟jser一般没有必要在这样的实现细节上过度纠缠。
      

  14.   

    有一篇确实不错,我自己在研究一下,thank you!