javascript 面向对象(一)
2012-01-09 22:17
344 查看
几个基本概念:
1、引用,其实就是我们平时所说的指针,指针是什么,就是地址,内存地址。如果我们把Javascript看做是一门面向对象的语言,则每一个对象都有一个引用指向。javascript就是通过控制引用来做到灵活性的。
2、作用域:javascirpt的作用域有2个要注意的地方,与我们平时不一样。
运行代码 我们发现输出结果为1
我们从上面的代码看,也知道我们平时使用Java或者.net if块里面的作用域在外面是无法访问的。这是第一个不同的地方。
第二个不同的地方,看代码:
如果我们在缺乏变量声明的时候,变量将会变成全局变量。
牢记,这2个基本概念。
我们在来看下javascript是怎么做到面向对象的:
类:面向对象语言中的基本组成,使用过Java或者.net应该都熟悉,class关键字!
而javascript中是怎么做到的呢,函数变形,为什么这么说呢,有个关键的地方this关键字!
这里我们可以将Teacher或者Student理解为类,类有属性和方法。也可以继承(下章再说)
当然我们也可以像使用java的方法一样,给类中的方法传递参数,参数也可以是对象,例如extjs组件构建的时候很多都是采用javascript对象字面量作为对象传递给方法。
使用函数来仿造类让javascript有面向对象的特性是一种手段,另外还有另一个方法,就是我上文说的对象字面量,结构有点类似json(www.josn.org)。这个方法与类不同的地方在于,他可以直接使用,有点类似Java里面的静态(static)方法。
这里我们提到的都是一些简单的东西,我会在下次结合extjs,用oop的思想去封装一个extjs tree组件来讲实例。后面还有继承、原型以及闭包等概念。
大冬天,打字后冷啊。今天写到这里,欢迎矫正和批评。。。。
另写于个人blog:http://pgtimes.net/article/92
1、引用,其实就是我们平时所说的指针,指针是什么,就是地址,内存地址。如果我们把Javascript看做是一门面向对象的语言,则每一个对象都有一个引用指向。javascript就是通过控制引用来做到灵活性的。
2、作用域:javascirpt的作用域有2个要注意的地方,与我们平时不一样。
<script> var count = 0 ; //javascript 条件语句中 只要数字不为0 //或者NaN都返还true,这里12就有true的意思 if(12){ var count =1; } alert(count); </script>
运行代码 我们发现输出结果为1
我们从上面的代码看,也知道我们平时使用Java或者.net if块里面的作用域在外面是无法访问的。这是第一个不同的地方。
第二个不同的地方,看代码:
<script> function foo(){ var sum = 1000; count = 0; } foo(); //alert(sum); // 错误 alert(count); //输出0 </script>
如果我们在缺乏变量声明的时候,变量将会变成全局变量。
牢记,这2个基本概念。
我们在来看下javascript是怎么做到面向对象的:
类:面向对象语言中的基本组成,使用过Java或者.net应该都熟悉,class关键字!
而javascript中是怎么做到的呢,函数变形,为什么这么说呢,有个关键的地方this关键字!
<script> function Teacher(){ this.name = "尊敬的张老师"; //怀念张老师 } function Student(){ name = "ttt"; this.study = function(){ alert("我正在学习张老师的视频"); } } var teac = new Teacher(); alert(teac.name); //输出尊敬的张老师 var stu = new Student(); alert(stu.name); //输出undefined stu.study(); </script>
这里我们可以将Teacher或者Student理解为类,类有属性和方法。也可以继承(下章再说)
当然我们也可以像使用java的方法一样,给类中的方法传递参数,参数也可以是对象,例如extjs组件构建的时候很多都是采用javascript对象字面量作为对象传递给方法。
使用函数来仿造类让javascript有面向对象的特性是一种手段,另外还有另一个方法,就是我上文说的对象字面量,结构有点类似json(www.josn.org)。这个方法与类不同的地方在于,他可以直接使用,有点类似Java里面的静态(static)方法。
<script> var person = { name:'花泽类', show:function(obj){ alert(obj.name); } } var obj = {name:'道明寺'}; person.show(obj); //输出道明寺 //提下命名空间 var person1 = {}; //其实person1就是一个对象 person1.util = {}; //然后我们给person1增加一个属性叫做util,而util是一个对象 //以此我们来做到命名空间,避免命名冲突 </script>
这里我们提到的都是一些简单的东西,我会在下次结合extjs,用oop的思想去封装一个extjs tree组件来讲实例。后面还有继承、原型以及闭包等概念。
大冬天,打字后冷啊。今天写到这里,欢迎矫正和批评。。。。
另写于个人blog:http://pgtimes.net/article/92
相关文章推荐
- 面向对象的JavaScript框架 Dojo
- JavaScript面向对象的程序设计2(组合构造和原型 继承)
- 全面理解面向对象的 JavaScript
- JavaScript面向对象的设计原则(一)
- [转]如何编写可维护的面向对象JavaScript代码
- JavaScript面向对象 “四段式”类设计方法javascript
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- JavaScript:面向对象
- javaScript 面向对象-继承(一)
- Javascript OOP之面向对象
- 令人惊奇的JavaScript面向对象(二)
- 浅谈javascript的面向对象(一)如何实现类
- 《JavaScript设计模式与开发》笔记 1.面向对象的JavaScript
- JavaScript面向对象的支持(6)
- JavaScript面向对象15分钟教程
- JavaScript面向对象15分钟教程
- 详解JavaScript基于面向对象之创建对象(2)
- JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解
- JavaScript面向对象的支持(6)
- javascript-基于对象or面向对象?