javascript类的实现

在函数内通过this指针引用的变量或者方法都会成为类的成员


在javascript中,function本身的定义就是类的构造函数


1.当解释器遇到new操作符时便创建一个空对象
2.开始运行函数,并将其中的this指针都指向这个新建的对象
3.因为当给对象不存在的属性赋值时,解释器就会为对象创建该属性,这样函数执行就是初始化这个对象的过程,即实现构造函数的作用。
4.当函数执行完后,new操行符就返回初始化后的对象。


使用prototype(所对应类的实例的原型)对象定义类成员
1.创建一个新的对象,并让this指针指向它。
2.将函数的prototype对象的所有成员都赋给这个新对象。
3.执行函数体,对这个对象进行初始化操作。
4.返回(1)中创建的对象。

prototype对象初始化过程发生在函数体(构造器)执行之前,所以可以在函数体内部调用prototype中定义的属性和方法。

原型对象的定义必须在创建类实例的语句之前,否则它将不会起作用。

在javascript中每个属性和方法都是独立的,它们通过this指针联系在一个对象上。


实现类的私有成员

在javascript中,一个函数内部定义的变量(局部变量),该变量不能够被此函数外的程序所访问,却可以被函数内部定义的嵌套所访问。
这些局部变量(私有成员),被所有在构造函数中定义的公有方法所共享,而且仅被在构造函数中定义的公有方法所公享。这意味着,在prototype中定义的类成员将不能访问在构造体中定义的局部变量。

<script language="JavaScript" type="text/javascript">
<!--
function class1(){
var pp=" this is a private property";
function pm(){
alert(pp);
}
this.method1=function(){
pp="pp has been changed";
}
this.method2=function(){
pm();
}


}
var obj1=new class1();
obj1.method1();
obj1.method2();
-->
</script>

实现静态成员

<script language="JavaScript" type="text/javascript">
<!--
function class1(){
var pp=" this is a private property";
function pm(){
alert(pp);
}
this.method1=function(){
pp="pp has been changed";
}
this.method2=function(){
pm();
}


}
var obj1=new class1();
obj1.method1();
obj1.method2();
-->
</script>

反射机制:程序在运行时能够获得自身的信息。

for(var p in obj){
if(typeof(obj[p]=="function")){
obj[p];
}else{
alert(obj[p]);
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值