面向对象讲解(3)

私有属性、实例属性、类属性

–这段知识是基于网上流传的李赞红的JS-OOP.ppt讲解的。

  • 私有属性只能在构造函数内部定义与使用;
  • 实例属性必须在对象实例化后使用;
  • 类属性直接通过类名去使用

例:

1、私有属性

var Me={
 _name:"Wang Hongjian",
 _age:23
}
 

调用方法:Me._name,假如现在声明另一个空对象Her,由于作用域Her无法调用_name属性。

2、实例属性:实例属性可以有两种声明方式,一是通过原型函数prototype声明;另一种是通过this关键字声明的。

<script type="text/javascript">
var Me=function(){
 this._age=23;
 this._name="Wang Hongjian"; 
 Me.prototype._sayHi=function(){
  alert("Hello,everybody");
 }
}
var M=new Me();
alert(M._name + "'s age is " + M._age);
M._sayHi();
</script>
 

 

3、类属性:直接通过类名去使用

<script type="text/javascript">
var Me={};
Me.sayHi="Hi,everybody!");
alert(Me.sayHi);
</script>
 

私有方法、实例方法、类方法

与属性相对应,方法也可分为私有、实例、及类方法。私有方法只可在对象中使用;实例方法必须在对象实例化后才能使用;类方法可以直接通过类名使用。

1、私有方法

<script type="text/javascript">
var Me={
 _sayHi:function(){
  alert("Hello,everybody!");
 }
}
Me._sayHi();
</script>
 

2、静态方法:语法及使用与静态属性类似

<script type="text/javascript">
var Me=function(){
 this.sayHi=function(){
  alert("Hello,everybody!");
 };
 Me.prototype.readBook=function(){
  alert("人生若只初相见,何事秋风悲画扇?");
 };
}
var M=new Me();
M.sayHi();
M.readBook();
</script>
 

3、类属性

<script type="text/javascript">
var Me={};
 Me.sayHi=function(){
  alert("Hi,everybody!");
}
Me.sayHi();
</script>
 

原理理解可以借鉴C#中的知识

C#静态成员

1)、静态成员属于类所有、非静态成员属于类的实例所有;
2)、每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;
3)、非静态成员属于类所有,为各个类的实例所公用;
4)、无论类创建了多少实例,类的静态成员在内在中只占同一区域。

C#静态方法

1)、C#静态方法属于类所有,类实例化后即可使用;
2)、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;
3)、静态方法在类实例化前就可以使用,而烦躁的非静态变量必须在实例化之后才能分配内存。(也即C#静态方法调用时无法判断非静态变量使用的内在存地址,所以无法使用。而静态变量的地址对类来说是固定的,都可以使用。)

阅读更多
个人分类: JavaScript
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭