您的位置:首页 > Web前端 > JavaScript

javascript 面向对象(一)

2012-01-09 22:17 344 查看
几个基本概念:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: