私有属性、实例属性、类属性
–这段知识是基于网上流传的李赞红的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#静态方法调用时无法判断非静态变量使用的内在存地址,所以无法使用。而静态变量的地址对类来说是固定的,都可以使用。)