<script>
function a(a1){
this.a1=a1
this.onclick=aa
}
function aa(){
alert(this.a1)
}
a2=new a('fason')
a2.onclick()
</script>
function a(a1){
this.a1=a1
this.onclick=aa
}
function aa(){
alert(this.a1)
}
a2=new a('fason')
a2.onclick()
</script>
alert(a2.a1); //a1在外部可以访问,所以不是私有变量
<!--
function myObj(){
var emu="hello";
this.setEmu = function (s){try{this.onEmuChange(emu,s)}catch(e){};emu=s;};
this.getEmu = function (){return emu};
this.onEmuChange = function (s1,s2){
alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .")
}
}
var o = new myObj();
var p = new myObj();
p.onEmuChange=function(){alert("*****")};
o.setEmu("test");
p.setEmu("world");
alert(o.getEmu())
alert(p.getEmu())
//-->
</SCRIPT>注意这个emu属性是private的,你不能通过p.emu来访问它。
<SCRIPT LANGUAGE="JavaScript">
<!--
function myObj(){
var emu="hello";
this.setEmu = function (s){
var actionResult;
try{actionResult = this.onEmuChange(emu,s)}catch(e){};
if (actionResult != false){
emu=s;
try{this.afterEmuChange(emu,s)}catch(e){};
}
};
this.getEmu = function (){return emu};
}var o = new myObj();
var p = new myObj();o.onEmuChange=function(){alert("before change o");return false};
o.afterEmuChange=function(){alert("after change o")};p.onEmuChange=function(){alert("before change p")};
p.afterEmuChange=function(){alert("after change p")};o.setEmu("test");
p.setEmu("world");
alert(o.getEmu())
alert(p.getEmu())
//-->
</SCRIPT>
<script>
function a(a1){
var a=a1; // 关键在这里。声明为局部变量,不能使用this指针。
this.get=function(){
return a;
}
}
a2=new a('fason');
alert(a2.get()); //out fason
alert(a2.a1); //out undefined
</script>
alert(a2.a); //out undefined
alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .")
}我感觉和用prototype的区别就在于下面用的继承只有一个副本,而这个每一个对象都一个副本myObj.prototype.onEmuChange = function (s1,s2){
alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .")
}
好像区别不大!
感谢大家