随笔-314  评论-209  文章-0  trackbacks-0

研究发现:属性(变量)可分为三类(对象属性、全局变量和局部变量)
对象属性:声明时以“this.”开头,只能被“类的实例”即对象所调用,不能被“类内部(对外不对内)”调用;全局变量:声明时直接以变量名开头,可以任意调用(对内对外);局部变量:只能被

“类内部(对内不对外)”调用。

 

JS函数的声明与访问原理

<script type="text/javascript">  
//类  
var testClass = function(){  
  //对象属性(对外不对内,类调用)  
  this.age ="25";  
  //全局变量(对内对外)  
  name="jack";  
  //局部变量(对内不对外)
  var address = "beijing";
    
  //全局函数(对内对外)  
  add = function(a,b){  
    //可访问:全局变量和局部变量  
    multiply(a,b);  
    return a+b;  
  }  
  //实例函数(由类的对象调用)  
  this.minus = function(a,b){  
    //可以访问:对象属性、全局变量和局部变量  
    return a-b;  
  }  
  //局部函数(内部直接调用)  
  var multiply = function(a,b){  
    //只能访问:全局变量和局部变量  
    return a*b;  
  }  
}  
 
 
//类函数(由类名直接调用)  
testClass.talk= function(){  
  //只能访问:全局变量和全局函数  
  this.what = function(){  
    alert("What can we talk about?");  
    about();  
  }  
    
  var about = function(){  
    alert("about name:"+name);
    alert("about add(1,1):"+add(1,1));
  }  
}  
 
 
//原型函数(由类的对象调用)  
testClass.prototype.walk = function(){  
  //只能访问:全局变量和全局函数  
  this.where = function(){  
    alert("Where can we go?");
    go();  
  }  
    
  var go = function(){  
    alert("go name:"+name); 
    alert("go add(1,1):"+add(1,1));
  }  
}  
</script> 


下面看看如何调用:

<script type="text/javascript">  
//获取一个cbs类的实例  
var cbs= new testClass();  
//调用类的对象属性age  
alert("age:"+cbs.age);  
 
//获取类函数talk的实例  
var talk = new testClass.talk();
//调用类函数的实例函数  
talk.what();  
 
//获取原型函数walk的实例  
var walk = new cbs.walk();  
//调用原型函数的实例函数  
walk.where();  
</script> 

posted on 2011-07-09 11:34 xzc 阅读(1002) 评论(2)  编辑  收藏 所属分类: XMLWeb

评论:
# re: js 高级编程[未登录] 2011-12-22 09:36 | xzc
function myClass(id, name)
{
this.ID = id;
this.Name = name;
}

myClass.prototype =
{
showMessage: function()
{
alert("ID: " + this.ID + ", Name: " + this.Name);
},
showMessage2: function()
{
alert("Method2");
}
}

var obj1 = new myClass(1, "johnson");
obj1.showMessage();
obj1.Name="John";
obj1.showMessage();
var obj2 = new myClass(2, "Amanda");
obj2.showMessage();
  回复  更多评论
  
# re: js 高级编程[未登录] 2011-12-22 09:36 | xzc
function subClass(){ }
subClass.prototype =
{
Name: "sub"
}

function myClass()
{
//构造函数
}

myClass.prototype =
{
ID: 1,
Name: "johnson",
SubObj: new subClass(),
showMessage: function()
{
alert("ID: " + this.ID + ", Name: " + this.Name + "SubObj.Name:" + this.SubObj.Name);
}
}

var obj1 = new myClass();
obj1.SubObj.Name = "XXX";
obj1.showMessage();
var obj2 = new myClass();
obj2.showMessage();  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: