读了篇博客感觉很有用"javascript对象的属性,方法,prototype作用范围分析"就自己写了一遍.以后自己可以用的到.
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 5 <title>javascript对象的属性,方法,prototype作用范围分析</title> 6 </head> 7 <body> 8 9 </body> 10 </html> 11 <script type="text/javascript"> 12 function Obj(arg){ 13 14 /*第1种:对象声明后,不管对象本身还是原型继承对象后的子类都没有办法直接访问*/ 15 var a = arg; //对象的私有变量 对象和原型都不能访问 16 var fn=function(){}; //对象的私有函数 对象和原型都不能访问 17 18 /*第2种*/ 19 this.b=arg; //原型的公有变量 原型能访问对象自己不能访问(这种其实很容易理解出错的,对象本身竟然不能调用但原型却可以.)一直以为这种是对象自己也是可以调用的属性. 20 this.fn1=function(){}; //原型的公有函数 原型能调用对象自己不能访问 21 } 22 /*第3种对象本身扩展后方法和属性,继承对象后的原型访问不到.*/ 23 Obj.c=1; //对象的公有变量 对象能访问原型不能 24 Obj.fn2=function(){}; //对象的共有函数 对象能访问原型不能 25 26 /*第4种*/ 27 Obj.prototype.d=11; //原型的属性 对象本身访问不到 28 Obj.prototype.fn3=function(){}; //原型的方法 对象本身访问不到 29 30 /*第2种和第4种放在一起就是原型继承对象后的子类可以访问到,但是原对象本身访问不到*/ 31 32 console.log("Obj.a = "+Obj.a); //Obj.a = undefined 33 console.log("Obj.fn = "+Obj.fn); //Obj.fn = undefined 34 35 console.log("Obj.b = "+ Obj.b); //Obj.b = undefined 36 console.log("Obj.fn1 = "+ Obj.fn1); //Obj.fn1 = undefined 37 38 console.log("Obj.c = "+ Obj.c); //Obj.c = 1 39 console.log("Obj.fn2 = "+Obj.fn2); //Obj.fn2 = function (){} 40 41 console.log("Obj.d = "+ Obj.d); //Obj.d = undefined 42 console.log("Obj.fn3 = "+Obj.fn3); //Obj.fn3 = undefined 43 console.log("--------------------------------------"); 44 45 var A = new Obj(22); 46 console.log("A.a = "+A.a); //A.a = undefined 47 console.log("A.fn = " +A.fn); //A.fn = undefined 48 49 console.log("A.b = "+ A.b); //A.b = 22 50 console.log("A.fn1 = "+A.fn1); //A.fn1 = function (){} 51 52 console.log("A.c = "+A.c); //A.c = undefined 53 console.log("A.fn2 = "+A.fn2); //A.fn2 = undefined 54 55 console.log("A.d = "+A.d); //A.d = 11 56 console.log("A.fn3 = "+A.fn3); //A.fn3 = function (){} 57 58 /*第1,3,4种方法很好理解.第2种方法对象本身不能直接访问闭包内的变量能够理解.但是使用关键字this后继承对象的原型就可以调用这些属性和方法值得深入研究.关键字this的特性.*/ 59 </script>