理解javascript类的实现
来源:互联网 发布:淘宝评价置顶规则 编辑:程序博客网 时间:2024/05/16 09:43
http://blog.csdn.net/leiyuanxiu/archive/2009/04/07/4054455.aspx
理解javascript类的实现 收藏
javascript中可以用function关键字来定义一个类,在函数内部通过this指针引用的变量或者是方法都会成为类的成员:
function class1(){
var s = "abc";
this.p1=s;
this.method1=function(){
alert("this is a test method");
}
}
var obj1 = new class1();
当通过new class()获得对象obj1时,这个对象便自动获得了属性p1和方法method1。在JavaScript中,function本身的定义就是类的构造函数,下面来看使用new创建对象的过程:
1 当解释器遇到new操作符便创建一个空对象;
2 开始运行class1这个函数,并将其中的this指针都指向这个新建的对象;
3 因为当给对象不存在的属性赋值的时,解释器就会为对象创建该属性,例如在class1中,当执行到this.p1=s这条语句时,就会添加一个属性p1,并把变量s值赋给它,这样函数执行就是初始化这个对象的过程,即实现了构造函数的调用。
4 当函数执行完成以后,new操作符就返回初始化后的对象。
这种方式的缺点是:
1 将所有的初始化语句,成员定义放在一起,代码逻辑不够清晰。
2 每创建一个类的实例,都要执行一次构造函数,所以实际上构造函数中定义的属性和方法总被重复的创建。
使用prototype对象来定义类成员。
<script>
function class1(){
this.prop=1;
}
calss1.prototype.showProp=function(){
alert(this.prop);
}
var obj1= new class1();
obj1.showProp();
</script>
因为prototype是JavaScript对象,所以可以为prototype对象添加,修改,删除方法和属性,从而为一个类添加成员定义。
现在再来看new的执行过程:
1 创建一个新对象并且让this指针指向它
2 将函数的prototype对象的所有成员都付给这个新对象。
3 执行函数体,对这个对象进行初始化操作。
4 返回1中创建的对象。
现在是多了用prototype来初始化对象的过程,这个初始化过程发生在函数体调用之前,所以可以在函数体内部调用prototype中定义的属性和方法。
需要注意的是:
原型对象的定义必须在创建类的实例语句之前,否则它将不起任何作用。
class1.prototype.costructor===class1。
- 理解javascript类的实现
- Javascript实现继承的理解
- 深入理解JavaScript是如何实现继承的
- 为您解惑:JavaScript命名空间的理解与实现........
- javascript类的实现
- javascript类的实现
- javascript 类的实现
- Javascript 类的实现
- javascript (类的实现)
- Javascript 类的实现
- 理解Javascript中类的定义
- JavaScript中的类和原型的理解
- javascript中闭包的理解
- javascript函数的理解
- javascript原型的理解
- JavaScript事件的理解
- JavaScript中闭包的理解
- Javascript的入门理解
- 我是主考官:我要招聘什么样的人
- Ubuntu9.10下eclipse的修正
- 整数溢出,如何判断整数溢出(没看明白,有空再看)
- php 调式方法
- 【FLEX】实现音频播放的波浪效果【转】
- 理解javascript类的实现
- [转帖]Photoshop巧做照片艺术处理:裙摆飞扬
- 测试文字
- 收集关于hibernate的不足
- asp.net网站发布后提示Ambiguous match found
- 异或运算符(xor) 的妙用
- 【转】如何在C++获得系统时间
- JavaScript中的公有成员,私有成员和静态成员
- 内核代码中一个逗号表达式比较特别的用法