<script language="javascript" type="text/javascript">
function CTest(sId){
var aa=this;
this.sId = sId;

this.alertTest = function(){
alert("Hard code Test");
alert("Id:"+aa.sId);
}

this.divObj = document.createElement("DIV");
this.divObj.innerHTML = "测试Alert";
this.divObj.onclick = this.alertTest;
this.getDivObj = function(){
return this.divObj;
}
}var objTest = new CTest("alert test info");document.getElementById("testScreen").appendChild(objTest.getDivObj());</script>
试过可以

解决方案 »

  1.   

    厉害.成功了:)
    知不知道为什么会这样的呢? 
    为什么this 不能访问 而 声明一个内部成员来给this赋值就可以. 这样的技巧有没有副作用的?例如其他缺点之类的 :) 感激不尽
      

  2.   

    this是一个指向自身的指针,创建对象时存在,也就是初始化时存在,等创建完成后,如果你要使用就需要定义一个内部变量记录这个指针,不然就找不到了。只是个人见解,我也没有太深研究。
      

  3.   

    你在这里的this是divObj,不是你的类
      

  4.   

    this指向当前对象。当你在divObj.onclick 中调用的时候,this.id是获取divObj.id,由于你没有设置,当然为undefined。sufon(是网不是站)因为加入了一个变量aa,aa指向function CTest(sId),在调用divObj.onclick 的时候,由于没有使用this,所以依然是指function CTest(sId),也就输出了CTest(sId)中的sId。
      

  5.   


    这不是什么技巧
    主要就是this是指向   当前对象 的指针这样看就清楚了,楼上的基本上已经说完了
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <div id="testScreen"></div>
    <script language="javascript" type="text/javascript">
    function CTest(sId)
    {
    this.sId = sId;
    var name=this;

    this.alertTest = function(){
    alert("Hard code Test");
    alert("Id:"+this.tagName);
    alert("ID:"+name.sId);
    }

    this.divObj = document.createElement("DIV");
    this.divObj.innerHTML = "测试Alert";
    this.divObj.onclick = this.alertTest;
    this.getDivObj = function(){
    return this.divObj;
    }
    }var objTest = new CTest("alert test info");
    document.getElementById("testScreen").appendChild(objTest.getDivObj())</script>
    </BODY>
    </HTML>其实这也是我们平常在创建prototype的class时调用prototype方法的一个method:
    http://blog.csdn.net/bluedestiny/archive/2006/03/20/630068.aspx